xtext-core/gradle/manifest-gen.gradle
2016-11-18 09:50:12 +01:00

76 lines
2.3 KiB
Groovy

/*
* The MANIFEST.MF files of this project are maintained manually. We have to make sure
* that the Bundle-Version entries have the current timestamp in their qualifier using
* the same format as generated by Tycho for Eclipse plug-ins. We also have to generate
* a proper MANIFEST.MF for the source bundles.
*/
def baseVersion = project.version
if (baseVersion.endsWith('-SNAPSHOT'))
baseVersion = baseVersion.substring(0, baseVersion.length() - 9)
else if (baseVersion.split('\\.').length == 4)
baseVersion = baseVersion.substring(0, baseVersion.lastIndexOf('.'))
def qualifiedVersion = baseVersion + '.v' + buildTime
//------------------------------------------------------
// Copy the existing manifest and insert the qualifier
ext.manifestReplacements = new HashMap()
manifestReplacements.put(baseVersion + '.qualifier', qualifiedVersion)
def manifestFile = "$buildDir/tmp/jar/MANIFEST.MF"
task genManifest(type: Copy) {
from "META-INF/MANIFEST.MF"
into "$buildDir/tmp/jar/"
doLast {
def f = new File(manifestFile)
def text = f.text
for (e in manifestReplacements.entrySet()) {
text = text.replace(e.key, e.value)
}
def writer = new PrintWriter(f)
writer.print(text)
writer.close()
}
}
jar {
dependsOn genManifest
inputs.file(manifestFile)
manifest {
from manifestFile
}
}
//------------------------------------------------------
// Generate a manifest for the source bundle
def sourcesManifestFile = "$buildDir/tmp/sourcesJar/MANIFEST.MF"
task genSourcesManifest {
outputs.file(sourcesManifestFile)
doLast {
def f = new File(sourcesManifestFile)
f.parentFile.mkdirs()
def writer = new PrintWriter(f)
writer.println("Manifest-Version: 1.0")
writer.println("Bundle-ManifestVersion: 2")
writer.println("Bundle-SymbolicName: ${project.name}.source")
writer.println("Bundle-Version: ${qualifiedVersion}")
if (project.hasProperty('title'))
writer.println("Bundle-Name: ${project.title} Sources")
else
writer.println("Bundle-Name: Sources")
writer.println("Bundle-Vendor: Eclipse Xtext")
writer.println("Eclipse-SourceBundle: ${project.name};version=\"${qualifiedVersion}\"")
writer.close()
}
}
sourcesJar {
dependsOn genSourcesManifest
inputs.file(sourcesManifestFile)
manifest {
from sourcesManifestFile
}
}