4 changed files with 145 additions and 40 deletions
@ -0,0 +1,7 @@
|
||||
apply plugin: 'groovy' |
||||
|
||||
dependencies { |
||||
compile gradleApi() |
||||
compile localGroovy() |
||||
} |
||||
|
@ -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); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue