Skip to content

Commit

Permalink
#3 add by default only the configured version file to the git add fil…
Browse files Browse the repository at this point in the history
…e list
  • Loading branch information
simonhauck committed May 16, 2024
1 parent 25e6322 commit db8bb28
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 23 deletions.
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package io.github.simonhauck.release.plugin

import org.gradle.api.file.ProjectLayout
import org.gradle.api.file.RegularFile
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property

abstract class ReleaseExtension(
Expand All @@ -15,6 +17,11 @@ abstract class ReleaseExtension(
val versionPropertyFile: RegularFileProperty =
objects.fileProperty().convention(layout.projectDirectory.file("version.properties"))

val gitAddFiles: ListProperty<RegularFile> =
objects
.listProperty(RegularFile::class.java)
.convention(versionPropertyFile.map { listOf(it) })

val releaseCommitMessage: Property<String> =
objects.property(String::class.java).convention("Release commit: v{version}")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,11 @@ class ReleasePlugin : Plugin<Project> {
it.commitMessagePrefix.set(extension.commitMessagePrefix)
it.tagName.set(extension.tagName)
it.stringTemplateVariables.set(extension.versionPropertyFile)
// TODO Simon.Hauck 2024-05-13 - solve this. Should be the file
it.gitAddFilePattern.set(".")
it.gitAddFilePattern.set(
extension.gitAddFiles.map { regularFiles ->
regularFiles.map { regularFile -> regularFile.asFile }
}
)
}
}

Expand All @@ -72,8 +75,9 @@ class ReleasePlugin : Plugin<Project> {
it.commitMessage.set(extension.postReleaseCommitMessage)
it.commitMessagePrefix.set(extension.commitMessagePrefix)
it.stringTemplateVariables.set(extension.versionPropertyFile)
// TODO Simon.Hauck 2024-05-13 - solve this. Should be the file
it.gitAddFilePattern.set(".")
it.gitAddFilePattern.set(
extension.versionPropertyFile.map { file -> listOf(file.asFile) }
)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,16 @@ package io.github.simonhauck.release.tasks
import arrow.core.fold
import io.github.simonhauck.release.file.internal.PropertiesFileUtil
import io.github.simonhauck.release.git.api.RevertCommand
import java.io.File
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.*

abstract class CommitAndTagTask : BaseReleaseTask(), GitTask {

@get:Input abstract val commitMessage: Property<String>
@get:Input @get:Optional abstract val gitAddFilePattern: Property<String>
@get:InputFiles abstract val gitAddFilePattern: ListProperty<File>
@get:Input @get:Optional abstract val commitMessagePrefix: Property<String>
@get:Input @get:Optional abstract val tagName: Property<String>
@get:Input @get:Optional abstract val tagPrefix: Property<String>
Expand All @@ -33,22 +32,24 @@ abstract class CommitAndTagTask : BaseReleaseTask(), GitTask {

val commitMessage = commitMessage.get().replaceVariables(templateVariables)
val commitPrefix = commitMessagePrefix.getOrElse("").replaceVariables(templateVariables)
val gitAddPattern = gitAddFilePattern.getOrElse(".").replaceVariables(templateVariables)

val tagName = tagName.getOrElse("").replaceVariables(templateVariables)
val tagPrefix = tagPrefix.getOrElse("").replaceVariables(templateVariables)
val tagMessage = tagMessage.getOrElse(commitMessage).replaceVariables(templateVariables)
val tagMessagePrefix = tagMessagePrefix.getOrElse("").replaceVariables(templateVariables)

gitCommandApi()
.add(gitAddPattern)
.onRight {
gitCommandHistoryApi
.get()
.registerRevertCommand(buildGitAddRevertCommand(gitAddPattern))
}
.onLeft { gitCommandHistoryApi.get().revertAllCommands() }
.getOrThrowGradleException()
gitAddFilePattern.get().forEach {
val filePath = it.absolutePath
gitCommandApi()
.add(filePath)
.onRight {
gitCommandHistoryApi
.get()
.registerRevertCommand(buildGitAddRevertCommand(filePath))
}
.onLeft { gitCommandHistoryApi.get().revertAllCommands() }
.getOrThrowGradleException()
}

gitCommandApi()
.commit("$commitPrefix$commitMessage")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class CommitAndTagTaskTest {
private val testDriver = ReleasePluginTestDriver()

@Test
fun `should add, commit and tag the selected files`() =
fun `should add, commit and tag the selected file`() =
testDriver(tmpDir) {
createValidGitRepository()

Expand All @@ -26,7 +26,7 @@ class CommitAndTagTaskTest {
"""
|tasks.register<CommitAndTagTask>("commitAndTag") {
| commitMessage.set("new commit")
| gitAddFilePattern.set("newFile.txt")
| gitAddFilePattern.set(listOf("newFile.txt"))
| commitMessagePrefix.set("feat: ")
| tagName.set("1.0.0")
| tagPrefix.set("v")
Expand All @@ -48,6 +48,33 @@ class CommitAndTagTaskTest {
.contains("feat: new commit")
}

@Test
fun `should add and commit multiple files`() {
testDriver(tmpDir) {
createValidGitRepository()

File(tmpDir, "newFile.txt").writeText("Hello World")
File(tmpDir, "otherFile.txt").writeText("Hello World")

appendContentToBuildGradle(
"""
|tasks.register<CommitAndTagTask>("commitAndTag") {
| commitMessage.set("new commit")
| gitAddFilePattern.set(listOf(file("newFile.txt"), file("otherFile.txt"))
|}
"""
.trimMargin()
)

val runner = testKitRunner().withArguments("commitAndTag").build()

val actual = runner.task(":commitAndTag")?.outcome

assertThat(actual).isEqualTo(TaskOutcome.SUCCESS)
assertThat(gitCommandApi.status().assertIsOk().untracked).isEmpty()
}
}

@Test
fun `should not tag the commit if tagName is not set`() =
testDriver(tmpDir) {
Expand All @@ -59,7 +86,7 @@ class CommitAndTagTaskTest {
"""
|tasks.register<CommitAndTagTask>("commitAndTag") {
| commitMessage.set("new commit")
| gitAddFilePattern.set("newFile.txt")
| gitAddFilePattern.set(listOf(file("newFile.txt")))
|}
"""
.trimMargin()
Expand All @@ -85,7 +112,7 @@ class CommitAndTagTaskTest {
"""
|tasks.register<CommitAndTagTask>("commitAndTag") {
| commitMessage.set("new commit")
| gitAddFilePattern.set("newFile.txt")
| gitAddFilePattern.set(listOf("newFile.txt"))
| tagName.set("v1.0.0")
|}
"""
Expand Down

0 comments on commit db8bb28

Please sign in to comment.