From 31349c553d3db10289fa59bac45fa41f0041b32e Mon Sep 17 00:00:00 2001 From: Nikolaus Krismer <nikolaus.krismer@uibk.ac.at> Date: Wed, 13 Aug 2014 14:18:29 +0200 Subject: [PATCH] added changelog generation to build process (by now the changelog is not checked in into git) --- build.gradle | 40 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 5337a644..4a40cb65 100644 --- a/build.gradle +++ b/build.gradle @@ -107,6 +107,25 @@ def getDate() { return formattedDate } +def readGitTags() { + def tags = [] + def proc = "git tag".execute() + proc.in.eachLine { line -> tags += line} + Collections.reverse( tags ) + + tags +} + + def readGitMessages(String tag, String prevTag) { + def message = [] + def range = (prevTag == null || prevTag == "") ? "$tag" : "$prevTag..$tag" + def proc = "git log $range --oneline --no-merges".execute() + proc.in.eachLine { line -> message += line } + proc.err.eachLine { line -> println line } + + message +} + // Detailled settings (dependencies, tasks, task configuration, ...) repositories { @@ -276,6 +295,25 @@ vagrantDestroy.doFirst { // Custom task definitions +task changelog << { + def fileChangelog = new File('CHANGELOG.md') + def tags = ["HEAD"] + readGitTags() + def numTags = tags.size(); + def prevTag + def tag + + fileChangelog.delete() + for (int i = 0; i < numTags; i++) { + tag = tags[i]; + prevTag = tags[i+1] + + fileChangelog << "- Version ${tag}:\n".replaceAll("Version HEAD", "Upcoming version") + def message = readGitMessages(tag, prevTag) + message.each{fileChangelog << " - $it\n"} + fileChangelog << "\n" + } +} + task cleanAfterDaily(type: Delete) { delete "$buildDir/dependency-cache" delete "$buildDir/tmp" @@ -371,7 +409,7 @@ task vagrantPrepare << { task jarAll(dependsOn: [jar, javadocJar, sourcesJar, staticJar, testJar]) task buildAll(dependsOn: [jarAll, build]) -task daily(dependsOn: [clean, asciidoctor, check, javadoc, jarAll]) +task daily(dependsOn: [clean, asciidoctor, changelog, check, javadoc, jarAll]) task release // task dependencies -- GitLab