Changelog generation
This commit is contained in:
		
							
								
								
									
										7
									
								
								buildSrc/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								buildSrc/build.gradle
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
apply plugin: 'groovy'
 | 
			
		||||
 | 
			
		||||
dependencies {
 | 
			
		||||
    compile gradleApi()
 | 
			
		||||
    compile localGroovy()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										59
									
								
								buildSrc/src/main/groovy/kcauldron/CreateChangelog.groovy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								buildSrc/src/main/groovy/kcauldron/CreateChangelog.groovy
									
									
									
									
									
										Normal 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);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user