Fix changelog task to use git tag as input

This commit is contained in:
William Brawner 2024-08-24 12:11:02 -06:00
parent c7a888a413
commit 3e1fbb6acd
Signed by: wbrawner
GPG key ID: 8FF12381C6C90D35

View file

@ -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()
} }