3
0

Changelog generation

This commit is contained in:
Prototik
2015-06-01 17:29:21 +07:00
parent 9973a9f8e8
commit 939bb4b7da
4 changed files with 142 additions and 37 deletions

7
buildSrc/build.gradle Normal file
View File

@ -0,0 +1,7 @@
apply plugin: 'groovy'
dependencies {
compile gradleApi()
compile localGroovy()
}

View File

@ -0,0 +1,59 @@
package kcauldron
import org.gradle.api.GradleException
import org.gradle.api.GradleScriptException
import org.gradle.api.file.FileCollection
import org.gradle.api.internal.file.copy.CopyAction
import org.gradle.api.internal.file.copy.CopyActionProcessingStream
import org.gradle.api.internal.tasks.SimpleWorkResult
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.SkipWhenEmpty
import org.gradle.api.tasks.WorkResult
import org.gradle.api.tasks.bundling.AbstractArchiveTask
public class CreateChangelog extends AbstractArchiveTask {
@Input
def String oldChangelogUrl
@Input
def String hash
@Input
def String message
@Input
def String version
@Input
def String format = "# <version>: <hash>\n<message>\n\n"
@Override
FileCollection getSource() {
return project.files(project.buildDir)
}
@Override
protected CopyAction createCopyAction() {
return new CopyAction() {
@Override
WorkResult execute(CopyActionProcessingStream stream) {
def oldChangelog;
try {
oldChangelog = new URL(oldChangelogUrl).text.trim();
} catch (Exception e) {
if (!project.hasProperty('ignoreOldChangelog'))
throw new GradleException('Error occurred during fetching latest log', e)
oldChangelog = ''
e.printStackTrace();
}
try {
def newMessage = '';
message.eachLine { newMessage += ' ' + it + '\n' }
def append = format.replace('<version>', version).replace('<hash>', hash).replace('<message>', message)
def changelog = append + oldChangelog;
archivePath.write(changelog.trim(), 'utf-8')
return new SimpleWorkResult(true);
} catch(Exception e) {
e.printStackTrace();
return new SimpleWorkResult(false);
}
}
}
}
}