From a8de4755f5848d3280b57a317e097801c347cf79 Mon Sep 17 00:00:00 2001 From: Rahul Somasunderam Date: Mon, 22 Dec 2025 16:23:14 -0800 Subject: [PATCH] fix: Handle `git@` urls that don't end in `.git` Prior to this, something like would log a warning. ``` git@github.com:username/nebula-publishing-plugin ``` This change handles it correctly. Also, remove `@CompileDynamic`. --- .../nebula/plugin/publishing/maven/MavenScmPlugin.groovy | 9 ++++----- .../plugin/publishing/maven/MavenScmPluginSpec.groovy | 3 ++- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/groovy/nebula/plugin/publishing/maven/MavenScmPlugin.groovy b/src/main/groovy/nebula/plugin/publishing/maven/MavenScmPlugin.groovy index 11cb30f..15980bc 100644 --- a/src/main/groovy/nebula/plugin/publishing/maven/MavenScmPlugin.groovy +++ b/src/main/groovy/nebula/plugin/publishing/maven/MavenScmPlugin.groovy @@ -15,7 +15,7 @@ */ package nebula.plugin.publishing.maven -import groovy.transform.CompileDynamic + import nebula.plugin.info.scm.GitScmProvider import nebula.plugin.info.scm.ScmInfoExtension import nebula.plugin.info.scm.ScmInfoPlugin @@ -76,17 +76,16 @@ class MavenScmPlugin implements Plugin { } } - static final GIT_PATTERN = /((git|ssh|https?):(\/\/))?(\w+@)?([\w\.@\\/\-~]+)([\:\\/])([\w\.@\:\/\-~]+)(\.git)(\/)?/ + static final GIT_PATTERN = /^((git|ssh|https?):\/\/)?((\S+)@)?(?\S+?)[:\/](?\S+?)(.git)?\/?$/ /** * Convert git syntax of git@github.com:reactivex/rxjava-core.git to https://github.com/reactivex/rxjava-core * @param origin */ - @CompileDynamic static String calculateUrlFromOrigin(String origin, Project project) { def m = origin =~ GIT_PATTERN - if (m) { - return "https://${m[0][5]}/${m[0][7]}" + if (m.matches()) { + return "https://${m.group("host")}/${m.group("repo")}" } else { project.logger.warn("Unable to convert $origin to https form in MavenScmPlugin. Using original value.") return origin diff --git a/src/test/groovy/nebula/plugin/publishing/maven/MavenScmPluginSpec.groovy b/src/test/groovy/nebula/plugin/publishing/maven/MavenScmPluginSpec.groovy index cacb992..29aa7cb 100644 --- a/src/test/groovy/nebula/plugin/publishing/maven/MavenScmPluginSpec.groovy +++ b/src/test/groovy/nebula/plugin/publishing/maven/MavenScmPluginSpec.groovy @@ -37,9 +37,10 @@ class MavenScmPluginSpec extends PluginProjectSpec { scmOrigin | calculatedUrl 'https://fake-scm.com/foo/bar.git' | 'https://fake-scm.com/foo/bar' 'https://github.com/nebula-plugins/nebula-publishing-plugin' | 'https://github.com/nebula-plugins/nebula-publishing-plugin' + 'https://github.com/nebula-plugins/nebula-publishing-plugin/' | 'https://github.com/nebula-plugins/nebula-publishing-plugin' 'https://github.com/nebula-plugins/nebula-publishing-plugin.git' | 'https://github.com/nebula-plugins/nebula-publishing-plugin' 'git@github.com:nebula-plugins/nebula-publishing-plugin.git' | 'https://github.com/nebula-plugins/nebula-publishing-plugin' 'git@github.com:username/nebula-publishing-plugin.git' | 'https://github.com/username/nebula-publishing-plugin' - 'git@github.com:username/nebula-publishing-plugin.git' | 'https://github.com/username/nebula-publishing-plugin' + 'git@github.com:username/nebula-publishing-plugin' | 'https://github.com/username/nebula-publishing-plugin' } }