diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index 9164cdeed6..167ea9134a 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -129,7 +129,7 @@ module Homebrew # spamming during normal output. Homebrew.install_bundler_gems!(groups: ["audit", "style"]) unless args.no_audit? - tap_remote_repo = formula.tap.full_name || formula.tap.remote_repository + tap_remote_repo = formula.tap.remote_repository remote = "origin" remote_branch = formula.tap.git_repository.origin_branch_name previous_branch = "-" diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb index d2502c753b..9aeaa6f8b4 100644 --- a/Library/Homebrew/tap.rb +++ b/Library/Homebrew/tap.rb @@ -275,10 +275,9 @@ class Tap sig { returns(T.nilable(String)) } def remote_repository return unless (remote = self.remote) + return unless (match = remote.match(HOMEBREW_TAP_REPOSITORY_REGEX)) - @remote_repository ||= remote.delete_prefix("https://github.com/") - .delete_prefix("git@github.com:") - .delete_suffix(".git") + @remote_repository ||= T.must(match[:remote_repository]) end # @deprecated diff --git a/Library/Homebrew/tap_constants.rb b/Library/Homebrew/tap_constants.rb index fe2d73e7ef..27b30331fa 100644 --- a/Library/Homebrew/tap_constants.rb +++ b/Library/Homebrew/tap_constants.rb @@ -13,6 +13,11 @@ HOMEBREW_DEFAULT_TAP_FORMULA_REGEX = T.let( %r{\A(?:[Hh]omebrew/(?:homebrew-)?core/)?(?#{HOMEBREW_TAP_FORMULA_NAME_REGEX.source})\Z}, Regexp, ) +# Match taps' remote repository, e.g. `someuser/somerepo`. +HOMEBREW_TAP_REPOSITORY_REGEX = T.let( + %r{\A.+[/:](?[^/:]+/[^/:]+?(?=\.git/*\Z|/*\Z))}, + Regexp, +) # Match a cask token. HOMEBREW_TAP_CASK_TOKEN_REGEX = T.let(/(?[\w+\-.@]+)/, Regexp)