From 6d34bb6f94ab430a2f635763af2aedf7ab3d84cd Mon Sep 17 00:00:00 2001 From: William Brawner Date: Sat, 24 Aug 2024 12:11:02 -0600 Subject: [PATCH] Fix changelog task to use git tag as input --- .../wbrawner/releasehelper/ChangelogTask.kt | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/buildSrc/src/main/kotlin/com/wbrawner/releasehelper/ChangelogTask.kt b/buildSrc/src/main/kotlin/com/wbrawner/releasehelper/ChangelogTask.kt index 3f31e56..99a744f 100644 --- a/buildSrc/src/main/kotlin/com/wbrawner/releasehelper/ChangelogTask.kt +++ b/buildSrc/src/main/kotlin/com/wbrawner/releasehelper/ChangelogTask.kt @@ -2,25 +2,37 @@ package com.wbrawner.releasehelper import org.gradle.api.DefaultTask import org.gradle.api.file.RegularFileProperty +import org.gradle.api.internal.provider.Providers 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.TaskAction 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 val changelogFile: RegularFileProperty = objectFactory.fileProperty() + @get:Input + @Suppress("UnstableApiUsage") + val latestTag: String = providers.exec { + commandLine("git" , "describe", "--tags", "--abbrev=0") + }.standardOutput.asText.get() + init { changelogFile.set(project.layout.projectDirectory.file(CHANGELOG_PATH)) } @TaskAction fun execute() { - val latestTag = "git describe --tags --abbrev=0".execute() - val changelog = "git log --format=\"%B\" ${latestTag.first().trim()}..".execute() + val changelog = "git log --format=\"%B\" ${latestTag.trim()}..".execute() logger.info("Latest tag: $latestTag") logger.info("Changelog: ${changelog.joinToString("\n")}") changelogFile.get().asFile.writer().use { writer -> @@ -36,4 +48,4 @@ abstract class ChangelogTask @Inject constructor(objectFactory: ObjectFactory) : .start() .inputReader() .readLines() -} \ No newline at end of file +}