Fix changelog task to use git tag as input
This commit is contained in:
parent
9d26752d2b
commit
6d34bb6f94
1 changed files with 17 additions and 5 deletions
|
@ -2,25 +2,37 @@ package com.wbrawner.releasehelper
|
||||||
|
|
||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
import org.gradle.api.file.RegularFileProperty
|
import org.gradle.api.file.RegularFileProperty
|
||||||
|
import org.gradle.api.internal.provider.Providers
|
||||||
import org.gradle.api.model.ObjectFactory
|
import org.gradle.api.model.ObjectFactory
|
||||||
|
import org.gradle.api.provider.Property
|
||||||
|
import org.gradle.api.provider.ProviderFactory
|
||||||
|
import org.gradle.api.tasks.Input
|
||||||
import org.gradle.api.tasks.OutputFile
|
import org.gradle.api.tasks.OutputFile
|
||||||
import org.gradle.api.tasks.TaskAction
|
import org.gradle.api.tasks.TaskAction
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
private const val CHANGELOG_PATH = "src/play/play/release-notes/en-US/default.txt"
|
private const val CHANGELOG_PATH = "src/play/play/release-notes/en-US/production.txt"
|
||||||
|
|
||||||
abstract class ChangelogTask @Inject constructor(objectFactory: ObjectFactory) : DefaultTask() {
|
abstract class ChangelogTask @Inject constructor(
|
||||||
|
objectFactory: ObjectFactory,
|
||||||
|
providers: ProviderFactory,
|
||||||
|
) : DefaultTask() {
|
||||||
@get:OutputFile
|
@get:OutputFile
|
||||||
val changelogFile: RegularFileProperty = objectFactory.fileProperty()
|
val changelogFile: RegularFileProperty = objectFactory.fileProperty()
|
||||||
|
|
||||||
|
@get:Input
|
||||||
|
@Suppress("UnstableApiUsage")
|
||||||
|
val latestTag: String = providers.exec {
|
||||||
|
commandLine("git" , "describe", "--tags", "--abbrev=0")
|
||||||
|
}.standardOutput.asText.get()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
changelogFile.set(project.layout.projectDirectory.file(CHANGELOG_PATH))
|
changelogFile.set(project.layout.projectDirectory.file(CHANGELOG_PATH))
|
||||||
}
|
}
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
fun execute() {
|
fun execute() {
|
||||||
val latestTag = "git describe --tags --abbrev=0".execute()
|
val changelog = "git log --format=\"%B\" ${latestTag.trim()}..".execute()
|
||||||
val changelog = "git log --format=\"%B\" ${latestTag.first().trim()}..".execute()
|
|
||||||
logger.info("Latest tag: $latestTag")
|
logger.info("Latest tag: $latestTag")
|
||||||
logger.info("Changelog: ${changelog.joinToString("\n")}")
|
logger.info("Changelog: ${changelog.joinToString("\n")}")
|
||||||
changelogFile.get().asFile.writer().use { writer ->
|
changelogFile.get().asFile.writer().use { writer ->
|
||||||
|
@ -36,4 +48,4 @@ abstract class ChangelogTask @Inject constructor(objectFactory: ObjectFactory) :
|
||||||
.start()
|
.start()
|
||||||
.inputReader()
|
.inputReader()
|
||||||
.readLines()
|
.readLines()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue