diff --git a/build.gradle b/build.gradle index 46b51b78ef49c7946d887f4bf78ea646ccb92dff..fda5e3af11a8507e29570c140f42708d31fc8f0e 100644 --- a/build.gradle +++ b/build.gradle @@ -109,25 +109,6 @@ 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 { @@ -299,27 +280,37 @@ vagrantDestroy.doFirst { // Custom task definitions task changelog << { + def grgit = Grgit.open(project.file('.')) def fileChangelog = new File('CHANGELOG.md') - def tags = ["HEAD"] + readGitTags() - def numTags = tags.size(); - def prevTag - def tag + def tags = ["HEAD"] + + grgit.tag.list().reverse().each{ t -> + tags += t.getName() + } 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" + def builder + def numTags = tags.size() + for (int i = 0; i < numTags - 1; i++) { + builder = new StringBuilder() + builder.append("- Version ${tags[i]}:\n".replaceAll('Version HEAD', 'Upcoming version')) + + grgit.log { + range tags[i+1], tags[i]; + }.inject(builder) { bldr, commit -> + bldr.append(' - ') + bldr.append(commit.shortMessage) + bldr.append('\n') + } + + fileChangelog << builder.toString() } } task changelog2Git << { - def grgit = Grgit.open(project.file('.')) - grgit.add(patterns: ['CHANGELOG.md']) + def grgit = Grgit.open(project.file('.')) + grgit.add(patterns: ['CHANGELOG.md']) + grgit.commit(message: 'Changelog updated (by jenkins)') } task cleanAfterDaily(type: Delete) {