Skip to content

Commit a077162

Browse files
committed
Fix branch substitution in commit templates
1 parent 3f94bf7 commit a077162

File tree

14 files changed

+77
-49
lines changed

14 files changed

+77
-49
lines changed

src/main/kotlin/uk/co/ben_gibson/git/link/pipeline/Pipeline.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ import uk.co.ben_gibson.url.URL
1010
import java.util.*
1111
import kotlin.collections.Set
1212

13-
@Service
13+
@Service(Service.Level.PROJECT)
1414
class Pipeline(private val project: Project) {
1515
private val middlewares: Set<Middleware> = setOf(
16-
project.service<GenerateUrl>(),
17-
project.service<Timer>(),
18-
project.service<RecordHit>(),
19-
project.service<ForceHttps>(),
20-
project.service<SendSupportNotification>(),
21-
project.service<ResolveContext>(),
16+
service<GenerateUrl>(),
17+
service<Timer>(),
18+
service<RecordHit>(),
19+
service<ForceHttps>(),
20+
service<SendSupportNotification>(),
21+
service<ResolveContext>(),
2222
)
2323

2424
fun accept(context: Context) : URL? {

src/main/kotlin/uk/co/ben_gibson/git/link/pipeline/middleware/GenerateUrl.kt

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,26 @@ class GenerateUrl : Middleware {
3737
val repositoryFile = File.forRepository(context.file, repository)
3838

3939
return when (context) {
40-
is ContextFileAtCommit -> UrlOptions.UrlOptionsFileAtCommit(repositoryFile, context.commit, context.lineSelection)
41-
is ContextCommit -> UrlOptions.UrlOptionsCommit(context.commit)
40+
is ContextFileAtCommit -> UrlOptions.UrlOptionsFileAtCommit(
41+
repositoryFile,
42+
repository.currentBranch?.name ?: settings.fallbackBranch,
43+
context.commit,
44+
context.lineSelection
45+
)
46+
is ContextCommit -> UrlOptions.UrlOptionsCommit(
47+
context.commit,
48+
repository.currentBranch?.name ?: settings.fallbackBranch
49+
)
4250
is ContextCurrentFile -> {
4351
val commit = resolveCommit(repository, remote, settings, pullRequestWorkflowSupported)
4452

4553
if (commit != null) {
46-
UrlOptions.UrlOptionsFileAtCommit(repositoryFile, commit, context.lineSelection)
54+
UrlOptions.UrlOptionsFileAtCommit(
55+
repositoryFile,
56+
repository.currentBranch?.name ?: settings.fallbackBranch,
57+
commit,
58+
context.lineSelection
59+
)
4760
} else {
4861
UrlOptions.UrlOptionsFileAtBranch(
4962
repositoryFile,

src/main/kotlin/uk/co/ben_gibson/git/link/ui/validation/ValidationExtensions.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ fun ValidationInfoBuilder.fileAtCommitTemplate(value: String): ValidationInfo? {
6363

6464
val options = UrlOptions.UrlOptionsFileAtCommit(
6565
File("foo.kt", false, "src/main", false),
66+
"main",
6667
Commit("734232a3c18f0625843bd161c3f5da272b9d53c1"),
6768
LineSelection(10, 20)
6869
)
@@ -89,7 +90,7 @@ fun ValidationInfoBuilder.commitTemplate(value: String): ValidationInfo? {
8990
return null
9091
}
9192

92-
val options = UrlOptions.UrlOptionsCommit(Commit("734232a3c18f0625843bd161c3f5da272b9d53c1"))
93+
val options = UrlOptions.UrlOptionsCommit(Commit("734232a3c18f0625843bd161c3f5da272b9d53c1"), "main")
9394

9495
return urlTemplate(options, commit = value)
9596
}

src/main/kotlin/uk/co/ben_gibson/git/link/url/UrlOptions.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import uk.co.ben_gibson.git.link.git.File
55
import uk.co.ben_gibson.git.link.ui.LineSelection
66

77
sealed interface UrlOptions {
8-
class UrlOptionsCommit(val commit: Commit) : UrlOptions
9-
class UrlOptionsFileAtCommit(val file: File, val commit: Commit, val lineSelection: LineSelection? = null) : UrlOptions
8+
class UrlOptionsCommit(val commit: Commit, val currentBranch: String,) : UrlOptions
9+
class UrlOptionsFileAtCommit(val file: File, val currentBranch: String, val commit: Commit, val lineSelection: LineSelection? = null) : UrlOptions
1010
class UrlOptionsFileAtBranch(val file: File, val branch: String, val lineSelection: LineSelection? = null) : UrlOptions
1111
}

src/main/kotlin/uk/co/ben_gibson/git/link/url/factory/TemplatedUrlFactory.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ open class TemplatedUrlFactory(private val templates: UrlTemplates) : UrlFactory
4545

4646
template = processFile(template, options.file)
4747
template = processCommit(template, options.commit)
48+
template = processBranch(template, options.currentBranch)
4849
template = processLineSelection(template, options.lineSelection, options.file)
4950

5051
return template
@@ -54,6 +55,7 @@ open class TemplatedUrlFactory(private val templates: UrlTemplates) : UrlFactory
5455
var template = templates.commit
5556

5657
template = processCommit(template, options.commit)
58+
template = processBranch(template, options.currentBranch)
5759

5860
return template
5961
}

src/test/kotlin/uk/co/ben_gibson/git/link/url/AzureTest.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,14 @@ class AzureTest {
3737
),
3838
Arguments.of(
3939
REMOTE_BASE_URL_WITH_GIT,
40-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT, LINE_SELECTION),
40+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT, LINE_SELECTION),
4141
"https://dev.azure.com/ben-gibson/_git/test.git?version=GCb032a0707beac9a2f24b1b7d97ee4f7156de182c&path=src%2FFoo.java&line=10&lineEnd=21&lineStartColumn=1&lineEndColumn=1"
4242
),
4343
Arguments.of(
4444
REMOTE_BASE_URL_WITH_GIT,
4545
UrlOptions.UrlOptionsFileAtCommit(
4646
File("resources", true, "src/foo", false),
47+
"main",
4748
COMMIT
4849
),
4950
"https://dev.azure.com/ben-gibson/_git/test.git?version=GCb032a0707beac9a2f24b1b7d97ee4f7156de182c&path=src%2Ffoo%2Fresources"
@@ -52,37 +53,38 @@ class AzureTest {
5253
REMOTE_BASE_URL_WITH_GIT,
5354
UrlOptions.UrlOptionsFileAtCommit(
5455
File("my-project", true, "", true),
56+
"main",
5557
COMMIT
5658
),
5759
"https://dev.azure.com/ben-gibson/_git/test.git?version=GCb032a0707beac9a2f24b1b7d97ee4f7156de182c&path=%2F"),
5860
Arguments.of(
5961
REMOTE_BASE_URL_WITH_GIT,
60-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT),
62+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT),
6163
"https://dev.azure.com/ben-gibson/_git/test.git?version=GCb032a0707beac9a2f24b1b7d97ee4f7156de182c&path=src%2FFoo.java"
6264
),
6365
Arguments.of(
6466
REMOTE_BASE_URL_WITH_GIT,
65-
UrlOptions.UrlOptionsCommit(COMMIT),
67+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
6668
"https://dev.azure.com/ben-gibson/_git/test.git/commit/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
6769
),
6870
Arguments.of(
6971
REMOTE_BASE_URL_WITHOUT_GIT,
70-
UrlOptions.UrlOptionsCommit(COMMIT),
72+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
7173
"https://dev.azure.com/ben-gibson/_git/test.git/commit/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
7274
),
7375
Arguments.of(
7476
REMOTE_BASE_URL_WITH_COMPANY_AND_GIT,
75-
UrlOptions.UrlOptionsCommit(COMMIT),
77+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
7678
"https://dev.azure.com/company/project/_git/test.git/commit/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
7779
),
7880
Arguments.of(
7981
REMOTE_BASE_URL_WITH_COMPANY_WITHOUT_GIT,
80-
UrlOptions.UrlOptionsCommit(COMMIT),
82+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
8183
"https://dev.azure.com/company/project/_git/test.git/commit/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
8284
),
8385
Arguments.of(
8486
URL.fromString("https://ssh.dev.azure.com/v3/ben-gibson/test/test"),
85-
UrlOptions.UrlOptionsCommit(COMMIT),
87+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
8688
"https://dev.azure.com/ben-gibson/test/_git/test.git/commit/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
8789
)
8890
)

src/test/kotlin/uk/co/ben_gibson/git/link/url/BitBucketCloudTest.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import uk.co.ben_gibson.git.link.ui.LineSelection
99
import java.util.stream.Stream
1010
import uk.co.ben_gibson.git.link.git.Commit
1111
import uk.co.ben_gibson.git.link.url.factory.BitbucketCloudUrlFactory
12-
import uk.co.ben_gibson.git.link.url.factory.TemplatedUrlFactory
13-
import uk.co.ben_gibson.git.link.url.template.UrlTemplates
1412
import uk.co.ben_gibson.url.URL
1513

1614
class BitBucketCloudTest {
@@ -46,13 +44,14 @@ class BitBucketCloudTest {
4644
),
4745
Arguments.of(
4846
REMOTE_BASE_URL,
49-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT, LineSelection(10, 20)),
47+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT, LineSelection(10, 20)),
5048
"https://bitbucket.org/foo/bar/src/b032a0707beac9a2f24b1b7d97ee4f7156de182c/src/Foo.java#lines-10:20"
5149
),
5250
Arguments.of(
5351
REMOTE_BASE_URL,
5452
UrlOptions.UrlOptionsFileAtCommit(
5553
File("resources", true, "src/foo", false),
54+
"main",
5655
COMMIT
5756
),
5857
"https://bitbucket.org/foo/bar/src/b032a0707beac9a2f24b1b7d97ee4f7156de182c/src/foo/resources"
@@ -61,18 +60,19 @@ class BitBucketCloudTest {
6160
REMOTE_BASE_URL,
6261
UrlOptions.UrlOptionsFileAtCommit(
6362
File("my-project", true, "", true),
63+
"main",
6464
COMMIT
6565
),
6666
"https://bitbucket.org/foo/bar/src/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
6767
),
6868
Arguments.of(
6969
REMOTE_BASE_URL,
70-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT),
70+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT),
7171
"https://bitbucket.org/foo/bar/src/b032a0707beac9a2f24b1b7d97ee4f7156de182c/src/Foo.java"
7272
),
7373
Arguments.of(
7474
REMOTE_BASE_URL,
75-
UrlOptions.UrlOptionsCommit(COMMIT),
75+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
7676
"https://bitbucket.org/foo/bar/commits/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
7777
)
7878
)

src/test/kotlin/uk/co/ben_gibson/git/link/url/BitBucketServerTest.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@ class BitBucketServerTest {
3535
),
3636
Arguments.of(
3737
REMOTE_BASE_URL,
38-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT, LineSelection(10, 20)),
38+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT, LineSelection(10, 20)),
3939
"https://stash.example.com/projects/foo/repos/bar/browse/src/Foo.java?at=b032a0707beac9a2f24b1b7d97ee4f7156de182c#10-20"
4040
),
4141
Arguments.of(
4242
REMOTE_BASE_URL,
4343
UrlOptions.UrlOptionsFileAtCommit(
4444
File("resources", true, "src/foo", false),
45+
"main",
4546
COMMIT
4647
),
4748
"https://stash.example.com/projects/foo/repos/bar/browse/src/foo/resources?at=b032a0707beac9a2f24b1b7d97ee4f7156de182c"
@@ -50,18 +51,19 @@ class BitBucketServerTest {
5051
REMOTE_BASE_URL,
5152
UrlOptions.UrlOptionsFileAtCommit(
5253
File("my-project", true, "", true),
54+
"main",
5355
COMMIT
5456
),
5557
"https://stash.example.com/projects/foo/repos/bar/browse?at=b032a0707beac9a2f24b1b7d97ee4f7156de182c"
5658
),
5759
Arguments.of(
5860
REMOTE_BASE_URL,
59-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT),
61+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT),
6062
"https://stash.example.com/projects/foo/repos/bar/browse/src/Foo.java?at=b032a0707beac9a2f24b1b7d97ee4f7156de182c"
6163
),
6264
Arguments.of(
6365
REMOTE_BASE_URL,
64-
UrlOptions.UrlOptionsCommit(COMMIT),
66+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
6567
"https://stash.example.com/projects/foo/repos/bar/commits/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
6668
)
6769
)

src/test/kotlin/uk/co/ben_gibson/git/link/url/ChromiumTest.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,38 +51,38 @@ class ChromiumTest {
5151
// Chromiumos file at commit
5252
Arguments.of(
5353
REMOTE_BASE_URL_CHROMIUMOS,
54-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT, LINE_SELECTION),
54+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT, LINE_SELECTION),
5555
"https://source.chromium.org/chromiumos/chromiumos/codesearch/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c:src/platform/ec/board/foo.c;l=10-20"
5656
),
5757
Arguments.of(
5858
REMOTE_BASE_URL_CHROMIUMOS,
59-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT),
59+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT),
6060
"https://source.chromium.org/chromiumos/chromiumos/codesearch/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c:src/platform/ec/board/foo.c"
6161
),
6262

6363
// Chromium file at commit
6464
Arguments.of(
6565
REMOTE_BASE_URL_CHROMIUM,
66-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT, LINE_SELECTION),
66+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT, LINE_SELECTION),
6767
"https://source.chromium.org/chromium/chromium/tools/build/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c:board/foo.c;l=10-20"
6868
),
6969
Arguments.of(
7070
REMOTE_BASE_URL_CHROMIUM,
71-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT),
71+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT),
7272
"https://source.chromium.org/chromium/chromium/tools/build/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c:board/foo.c"
7373
),
7474

7575
// Chromiumos commit
7676
Arguments.of(
7777
REMOTE_BASE_URL_CHROMIUMOS,
78-
UrlOptions.UrlOptionsCommit(COMMIT),
78+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
7979
"https://source.chromium.org/chromiumos/_/chromium/chromiumos/platform/ec/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
8080
),
8181

8282
// Chromium commit
8383
Arguments.of(
8484
REMOTE_BASE_URL_CHROMIUM,
85-
UrlOptions.UrlOptionsCommit(COMMIT),
85+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
8686
"https://source.chromium.org/chromium/chromium/tools/build/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
8787
),
8888
)

src/test/kotlin/uk/co/ben_gibson/git/link/url/GerritTest.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@ class GerritTest {
3535
),
3636
Arguments.of(
3737
REMOTE_BASE_URL,
38-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT, LineSelection(10, 20)),
38+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT, LineSelection(10, 20)),
3939
"https://gerrit.example.com/plugins/gitiles/foo/bar/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c/src/Foo.java#10"
4040
),
4141
Arguments.of(
4242
REMOTE_BASE_URL,
4343
UrlOptions.UrlOptionsFileAtCommit(
4444
File("resources", true, "src/foo", false),
45+
"main",
4546
COMMIT
4647
),
4748
"https://gerrit.example.com/plugins/gitiles/foo/bar/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c/src/foo/resources"
@@ -50,18 +51,19 @@ class GerritTest {
5051
REMOTE_BASE_URL,
5152
UrlOptions.UrlOptionsFileAtCommit(
5253
File("my-project", true, "", true),
54+
"main",
5355
COMMIT
5456
),
5557
"https://gerrit.example.com/plugins/gitiles/foo/bar/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
5658
),
5759
Arguments.of(
5860
REMOTE_BASE_URL,
59-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT),
61+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT),
6062
"https://gerrit.example.com/plugins/gitiles/foo/bar/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c/src/Foo.java"
6163
),
6264
Arguments.of(
6365
REMOTE_BASE_URL,
64-
UrlOptions.UrlOptionsCommit(COMMIT),
66+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
6567
"https://gerrit.example.com/plugins/gitiles/foo/bar/+/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
6668
)
6769
)

src/test/kotlin/uk/co/ben_gibson/git/link/url/GitHubTest.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,14 @@ class GitHubTest {
4343
),
4444
Arguments.of(
4545
REMOTE_BASE_URL,
46-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT, LineSelection(10, 20)),
46+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT, LineSelection(10, 20)),
4747
"https://github.com/my/repo/blob/b032a0707beac9a2f24b1b7d97ee4f7156de182c/src/Foo.java#L10-L20"
4848
),
4949
Arguments.of(
5050
REMOTE_BASE_URL,
5151
UrlOptions.UrlOptionsFileAtCommit(
5252
File("resources", true, "src/foo", false),
53+
"main",
5354
COMMIT
5455
),
5556
"https://github.com/my/repo/tree/b032a0707beac9a2f24b1b7d97ee4f7156de182c/src/foo/resources"
@@ -58,18 +59,19 @@ class GitHubTest {
5859
REMOTE_BASE_URL,
5960
UrlOptions.UrlOptionsFileAtCommit(
6061
File("my-project", true, "", true),
62+
"main",
6163
COMMIT
6264
),
6365
"https://github.com/my/repo/tree/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
6466
),
6567
Arguments.of(
6668
REMOTE_BASE_URL,
67-
UrlOptions.UrlOptionsFileAtCommit(FILE, COMMIT),
69+
UrlOptions.UrlOptionsFileAtCommit(FILE, "main", COMMIT),
6870
"https://github.com/my/repo/blob/b032a0707beac9a2f24b1b7d97ee4f7156de182c/src/Foo.java"
6971
),
7072
Arguments.of(
7173
REMOTE_BASE_URL,
72-
UrlOptions.UrlOptionsCommit(COMMIT),
74+
UrlOptions.UrlOptionsCommit(COMMIT, "main"),
7375
"https://github.com/my/repo/commit/b032a0707beac9a2f24b1b7d97ee4f7156de182c"
7476
)
7577
)

0 commit comments

Comments
 (0)