forked from xjboss/KCauldronX
208 lines
5.9 KiB
Groovy
208 lines
5.9 KiB
Groovy
import groovy.json.JsonSlurper
|
|
import kcauldron.CreateChangelog
|
|
|
|
buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
mavenLocal()
|
|
maven {
|
|
name = "forge"
|
|
url = "http://files.minecraftforge.net/maven"
|
|
}
|
|
maven {
|
|
name = "sonatype"
|
|
url = "https://oss.sonatype.org/content/repositories/snapshots/"
|
|
}
|
|
}
|
|
dependencies {
|
|
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
|
|
}
|
|
}
|
|
|
|
tasks.whenTaskAdded {
|
|
if (it.name.startsWith('publish')) it.dependsOn 'preparePublication'
|
|
}
|
|
|
|
apply plugin: 'maven'
|
|
apply plugin: 'cauldron'
|
|
apply plugin: 'maven-publish'
|
|
apply plugin: 'signing'
|
|
|
|
minecraft {
|
|
version = '1.7.10'
|
|
mcpVersion = '9.05'
|
|
mainClass = 'cpw.mods.fml.relauncher.ServerLaunchWrapper'
|
|
tweakClass = 'cpw.mods.fml.common.launcher.FMLTweaker'
|
|
installerVersion = "1.4"
|
|
subprojects {
|
|
repositories {
|
|
mavenCentral()
|
|
maven {
|
|
name = "sonatype"
|
|
url = "https://oss.sonatype.org/content/repositories/snapshots/"
|
|
}
|
|
}
|
|
}
|
|
srgExtra "PK: org/bukkit/craftbukkit org/bukkit/craftbukkit/v1_7_R4"
|
|
}
|
|
|
|
group = 'pw.prok'
|
|
|
|
ext.buildInfoCached = null;
|
|
|
|
def buildInfo(String key) {
|
|
if (!buildInfoCached) {
|
|
if (project.hasProperty('officialBuild')) {
|
|
buildInfoCached = new JsonSlurper().parse(new URL("https://prok.pw/version/${group}/${name}"))
|
|
} else {
|
|
buildInfoCached = [
|
|
nextBuildNumber: 'UNOFFICIAL.' + gitInfo('hash'),
|
|
version : 'NONE'
|
|
]
|
|
}
|
|
}
|
|
return key ? buildInfoCached[key] : buildInfoCached;
|
|
}
|
|
|
|
ext.gitInfoCached = null;
|
|
|
|
def gitInfo(String key) {
|
|
if (!gitInfoCached) {
|
|
if (file('.git').exists()) {
|
|
gitInfoCached = [
|
|
hash : ['git', 'log', "--format=%h", '-n', '1'].execute().text.trim(),
|
|
fullHash: ['git', 'log', "--format=%H", '-n', '1'].execute().text.trim(),
|
|
branch : ['git', 'symbolic-ref', '--short', 'HEAD'].execute().text.trim(),
|
|
message : ['git', 'log', "--format=%B", '-n', '1'].execute().text.trim()
|
|
]
|
|
} else {
|
|
gitInfoCached = [
|
|
hash : 'NOT_A_GIT',
|
|
fullHash: 'NOT_A_GIT',
|
|
branch : 'NOT_A_GIT',
|
|
message : 'NOT_A_GIT'
|
|
]
|
|
}
|
|
}
|
|
return key ? gitInfoCached[key] : gitInfoCached;
|
|
}
|
|
|
|
ext.mcVersion = "1.7.10"
|
|
ext.forgeVersion = "1420"
|
|
ext.revision = buildInfo('nextBuildNumber')
|
|
version = "${mcVersion}-${forgeVersion}.${revision}"
|
|
println "Updated KCauldron version: ${version}"
|
|
|
|
launch4j {
|
|
jreMinVersion = '1.6.0'
|
|
}
|
|
|
|
tasks.packageUniversal {
|
|
classifier = 'server'
|
|
manifest.attributes([
|
|
'KCauldron-Git-Branch' : gitInfo('branch'),
|
|
'KCauldron-Git-Hash' : gitInfo('fullHash'),
|
|
'KCauldron-Version' : project.version,
|
|
'Implementation-Vendor' : 'Prototik',
|
|
'Implementation-Title' : 'KCauldron',
|
|
'Implementation-Version': project.version,
|
|
'Forge-Version' : '10.13.3.1420',
|
|
'Specification-Vendor' : 'Bukkit Team',
|
|
'Specification-Title' : 'Bukkit',
|
|
'Specification-Version' : '1.7.10-R0.1-SNAPSHOT'
|
|
])
|
|
}
|
|
|
|
tasks.createChangelog.onlyIf { false }
|
|
|
|
task packageChangelog(type: CreateChangelog) {
|
|
onlyIf { project.hasProperty('officialBuild') }
|
|
classifier = 'changelog'
|
|
extension = 'txt'
|
|
oldChangelogUrl = "https://prok.pw/repo/${project.group.replace('.','/')}/${project.name}/${buildInfo('version')}/${project.name}-${buildInfo('version')}-changelog.txt"
|
|
hash = gitInfo('hash')
|
|
message = gitInfo('message')
|
|
version = project.version
|
|
}
|
|
|
|
task signJars(type: Sign, dependsOn: [packageUniversal, packageInstaller]) {
|
|
sign packageInstaller
|
|
sign packageUniversal
|
|
sign packageChangelog
|
|
}
|
|
|
|
task preparePublication(dependsOn: signJars) {}
|
|
|
|
def getSignatureFiles = {
|
|
def allFiles = project.tasks.signJars.signatureFiles.collect { it }
|
|
def signedServer = allFiles.find { it.name.contains('-server') }
|
|
def signedInstaller = allFiles.find { it.name.contains('-installer') }
|
|
def signedChangelog = allFiles.find { it.name.contains('-changelog') }
|
|
return [
|
|
[archive: signedServer, classifier: 'server', extension: 'jar.asc'],
|
|
[archive: signedInstaller, classifier: 'installer', extension: 'jar.asc'],
|
|
[archive: signedChangelog, classifier: 'changelog', extension: 'txt.asc']
|
|
]
|
|
}
|
|
|
|
publishing {
|
|
repositories {
|
|
maven {
|
|
name 'ProK'
|
|
url 'https://prok.pw/repo/'
|
|
credentials {
|
|
username project.hasProperty('prokRepoUsername') ? prokRepoUsername : null
|
|
password project.hasProperty('prokRepoPassword') ? prokRepoPassword : null
|
|
}
|
|
}
|
|
}
|
|
|
|
publications {
|
|
maven(MavenPublication) {
|
|
getSignatureFiles().each { signature ->
|
|
artifact(signature.archive) {
|
|
classifier = signature.classifier
|
|
extension = signature.extension
|
|
}
|
|
}
|
|
artifact packageUniversal
|
|
artifact packageInstaller
|
|
artifact packageChangelog
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.generateProjectCauldron << {
|
|
def file = new File('eclipse/cauldron/build.gradle')
|
|
file.append('''
|
|
repositories {
|
|
maven {
|
|
url 'https://prok.pw/repo'
|
|
}
|
|
}
|
|
dependencies {
|
|
compile 'pw.prok:KImagine:+@jar'
|
|
compile 'org.apache.httpcomponents:httpclient:4.4.1'
|
|
}
|
|
''')
|
|
}
|
|
|
|
configurations {
|
|
compile.extendsFrom exported
|
|
}
|
|
|
|
repositories {
|
|
maven {
|
|
url 'https://prok.pw/repo'
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
exported 'pw.prok:KImagine:+@jar'
|
|
exported 'org.apache.httpcomponents:httpclient:4.4.1'
|
|
}
|
|
|
|
packageUniversal {
|
|
from { configurations.exported.collect { it.isDirectory() ? it : zipTree(it) } }
|
|
}
|