diff --git a/src/main/java/org/shipkit/changelog/GenerateChangelogTask.java b/src/main/java/org/shipkit/changelog/GenerateChangelogTask.java index 164002a..5e50d9d 100644 --- a/src/main/java/org/shipkit/changelog/GenerateChangelogTask.java +++ b/src/main/java/org/shipkit/changelog/GenerateChangelogTask.java @@ -139,11 +139,27 @@ public void setOutputFile(File outputFile) { this.outputFile = outputFile; } - @InputDirectory + @Internal public File getWorkingDir() { return workingDir; } + @Optional + @InputDirectory + @PathSensitive(PathSensitivity.RELATIVE) + public File getGitDir() { + return provideGitDir(workingDir); + } + + static File provideGitDir(File workingDir) { + if (workingDir == null) { + return null; + } + + File gitDir = new File(workingDir, ".git"); + return gitDir.isDirectory() ? gitDir : null; + } + public void setWorkingDir(File workingDir) { this.workingDir = workingDir; } diff --git a/src/test/groovy/org/shipkit/changelog/GenerateChangelogTaskTest.groovy b/src/test/groovy/org/shipkit/changelog/GenerateChangelogTaskTest.groovy new file mode 100644 index 0000000..49388a5 --- /dev/null +++ b/src/test/groovy/org/shipkit/changelog/GenerateChangelogTaskTest.groovy @@ -0,0 +1,22 @@ +package org.shipkit.changelog + +import org.junit.Rule +import org.junit.rules.TemporaryFolder +import spock.lang.Specification + +import static org.shipkit.changelog.GenerateChangelogTask.provideGitDir + +class GenerateChangelogTaskTest extends Specification { + + @Rule TemporaryFolder tmp = new TemporaryFolder() + + def "getGitDir is safe"() { + expect: + provideGitDir(null) == null + provideGitDir(new File("missing")) == null + + and: + def gitDir = tmp.newFolder(".git") + provideGitDir(gitDir.parentFile) == gitDir + } +}