import org.doomedsociety.gradlecpp.GradleCppUtils import org.apache.commons.io.FilenameUtils void _copyFileToDir(String from, String to) { def dst = new File(project.file(to), FilenameUtils.getName(from)) GradleCppUtils.copyFile(project.file(from), dst, false) } void _copyFile(String from, String to) { 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() //bugfixed binaries project.file('publish/publishRoot/bin/bugfixed').mkdirs() _copyFileToDir('publish/releaseRehldsFixes/swds.dll', 'publish/publishRoot/bin/bugfixed/') _copyFileToDir('publish/releaseRehldsFixes/swds.pdb', 'publish/publishRoot/bin/bugfixed/') _copyFile('publish/releaseRehldsFixes/libengine_i486.so', 'publish/publishRoot/bin/bugfixed/engine_i486.so') //pure binaries project.file('publish/publishRoot/bin/pure').mkdirs() _copyFileToDir('publish/releaseRehldsNofixes/swds.dll', 'publish/publishRoot/bin/pure/') _copyFileToDir('publish/releaseRehldsNofixes/swds.pdb', 'publish/publishRoot/bin/pure/') _copyFile('publish/releaseRehldsNofixes/libengine_i486.so', 'publish/publishRoot/bin/pure/engine_i486.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' include 'interface.h', 'interface.cpp', 'FileSystem.h' } 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 //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-snapshots/" } 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' } }