import org.doomedsociety.gradlecpp.GradleCppUtils import org.apache.commons.io.FilenameUtils void _copyFileToDir(String from, String to) { if (!project.file(from).exists()) { println 'WARNING: Could not find: ' + from; return; } if (!project.file(to).exists()) { project.file(to).mkdirs(); } def dst = new File(project.file(to), FilenameUtils.getName(from)) GradleCppUtils.copyFile(project.file(from), dst, false) } void _copyFile(String from, String to) { if (!project.file(from).exists()) { println 'WARNING: Could not find: ' + from; return; } GradleCppUtils.copyFile(project.file(from), project.file(to), false) } task publishPrepareFiles { dependsOn ':flightrec/decoder:uberjar' doLast { def pubRootDir = project.file('publish/publishRoot') if (pubRootDir.exists()) { if (!pubRootDir.deleteDir()) { throw new RuntimeException("Failed to delete ${pubRootDir}") } } pubRootDir.mkdirs() project.file('publish/publishRoot/bin/win32/valve/dlls').mkdirs() project.file('publish/publishRoot/bin/linux32/valve/dlls').mkdirs() // bugfixed binaries _copyFile('publish/releaseRehldsFixes/swds.dll', 'publish/publishRoot/bin/win32/swds.dll') _copyFile('publish/releaseRehldsFixes/engine_i486.so', 'publish/publishRoot/bin/linux32/engine_i486.so') // dedicated binaries _copyFile('publish/hlds.exe', 'publish/publishRoot/bin/win32/hlds.exe') _copyFile('publish/hlds_linux', 'publish/publishRoot/bin/linux32/hlds_linux') // HLTV binaries _copyFile('publish/hltv.exe', 'publish/publishRoot/bin/win32/hltv.exe') _copyFile('publish/hltv', 'publish/publishRoot/bin/linux32/hltv') _copyFile('publish/core.dll', 'publish/publishRoot/bin/win32/core.dll') _copyFile('publish/core.so', 'publish/publishRoot/bin/linux32/core.so') _copyFile('publish/proxy.dll', 'publish/publishRoot/bin/win32/proxy.dll') _copyFile('publish/proxy.so', 'publish/publishRoot/bin/linux32/proxy.so') _copyFile('publish/demoplayer.dll', 'publish/publishRoot/bin/win32/demoplayer.dll') _copyFile('publish/demoplayer.so', 'publish/publishRoot/bin/linux32/demoplayer.so') _copyFile('publish/director.dll', 'publish/publishRoot/bin/win32/valve/dlls/director.dll') _copyFile('publish/director.so', 'publish/publishRoot/bin/linux32/valve/dlls/director.so') // FileSystem binaries _copyFile('publish/filesystem_stdio.dll', 'publish/publishRoot/bin/win32/filesystem_stdio.dll') _copyFile('publish/filesystem_stdio.so', 'publish/publishRoot/bin/linux32/filesystem_stdio.so') // hlsdk project.file('publish/publishRoot/hlsdk').mkdirs() copy { from 'rehlds/common' into 'publish/publishRoot/hlsdk/common' } copy { from 'rehlds/dlls' into 'publish/publishRoot/hlsdk/dlls' } copy { from 'rehlds/pm_shared' into 'publish/publishRoot/hlsdk/pm_shared' } copy { from 'rehlds/public' into 'publish/publishRoot/hlsdk/public' exclude '**/rehlds/*', '**/tier0/*' } copy { from 'rehlds/public/rehlds' into 'publish/publishRoot/hlsdk/engine' } // flightrecorder def flightRecJarTask = project(':flightrec/decoder').tasks.getByName('uberjar') println flightRecJarTask println flightRecJarTask.class.name File flightRecJarFile = flightRecJarTask.archivePath project.file('publish/publishRoot/flighrec').mkdirs() GradleCppUtils.copyFile(flightRecJarFile, project.file('publish/publishRoot/flighrec/decoder.jar'), false) copy { from new File(project(':flightrec/decoder').projectDir, 'pub') into 'publish/publishRoot/flighrec' } } } task publishPackage(type: Zip, dependsOn: 'publishPrepareFiles') { baseName = "rehlds-dist-${project.version}" destinationDir file('publish') from 'publish/publishRoot' } publishing { publications { maven(MavenPublication) { version project.version artifact publishPackage pom.withXml { asNode().children().last() + { resolveStrategy = DELEGATE_FIRST name project.name description project.description properties { commitDate project.ext.rehldsVersionInfo.commitDate commitSHA project.ext.rehldsVersionInfo.commitSHA } //url github //scm { // url "${github}.git" // connection "scm:git:${github}.git" //} /* licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' distribution 'repo' } } developers { developer { id 'dreamstalker' name 'dreamstalker' } } */ } } } } } Properties repoCreds = new Properties() project.ext.repoCreds = repoCreds if (file('repo_creds.properties').exists()) { println 'Loading maven repo credentials' file('repo_creds.properties').withReader('UTF-8', { Reader r -> repoCreds.load(r) }) } publishing { repositories { maven { if (project.version.contains('dev')) { url "http://nexus.rehlds.org/nexus/content/repositories/rehlds-dev/" } else { url "http://nexus.rehlds.org/nexus/content/repositories/rehlds-releases/" } credentials { username repoCreds.getProperty('username') password repoCreds.getProperty('password') } } } } task doPublish { dependsOn 'publishPackage' if (repoCreds.getProperty('username') && repoCreds.getProperty('password')) { dependsOn 'publish' dependsOn ':flightrec/decoder_api:publish' } }