aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Hagins2016-10-19 11:54:30 -0400
committerJosh Hagins2016-10-23 21:48:11 -0400
commit44f1354d63d8c95a61bb12353838c03e9abbebb6 (patch)
tree2f712312035cde470366ac9a40707029504c6517
parent512a0c950e828fe07e629a629ba4d7b2fb8c2a6d (diff)
downloadbrew-44f1354d63d8c95a61bb12353838c03e9abbebb6.tar.bz2
hbc/qualified_token: simplify token parsing
- Stop supporting archaic "user-repo/token" syntax - Move regex for parsing tapped Cask token to tap_constants
-rw-r--r--Library/Homebrew/cask/lib/hbc/qualified_token.rb36
-rw-r--r--Library/Homebrew/tap_constants.rb2
2 files changed, 7 insertions, 31 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/qualified_token.rb b/Library/Homebrew/cask/lib/hbc/qualified_token.rb
index 8868bd65d..21fe99682 100644
--- a/Library/Homebrew/cask/lib/hbc/qualified_token.rb
+++ b/Library/Homebrew/cask/lib/hbc/qualified_token.rb
@@ -1,37 +1,11 @@
module Hbc
module QualifiedToken
- REPO_PREFIX = "homebrew-".freeze
-
- # per https://github.com/Homebrew/homebrew/blob/4c7bc9ec3bca729c898ee347b6135ba692ee0274/Library/Homebrew/cmd/tap.rb#L121
- USER_REGEX = /[a-z0-9_\-]+/
-
- # per https://github.com/Homebrew/homebrew/blob/4c7bc9ec3bca729c898ee347b6135ba692ee0274/Library/Homebrew/cmd/tap.rb#L121
- REPO_REGEX = /(?:#{REPO_PREFIX})?\w+/
-
- # per https://github.com/caskroom/homebrew-cask/blob/master/CONTRIBUTING.md#generating-a-token-for-the-cask
- TOKEN_REGEX = /[a-z0-9\-]+/
-
- TAP_REGEX = %r{#{USER_REGEX}[/\-]#{REPO_REGEX}}
-
- QUALIFIED_TOKEN_REGEX = %r{#{TAP_REGEX}/#{TOKEN_REGEX}}
-
def self.parse(arg)
- return nil unless arg.is_a?(String) && arg.downcase =~ /^#{QUALIFIED_TOKEN_REGEX}$/
- path_elements = arg.downcase.split("/")
- if path_elements.count == 2
- # eg phinze-cask/google-chrome.
- # Not certain this form is needed, but it was supported in the past.
- token = path_elements[1]
- dash_elements = path_elements[0].split("-")
- repo = dash_elements.pop
- dash_elements.pop if dash_elements.count > 1 && dash_elements[-1] + "-" == REPO_PREFIX
- user = dash_elements.join("-")
- else
- # eg caskroom/cask/google-chrome
- # per https://github.com/Homebrew/brew/blob/master/docs/brew-tap.md
- user, repo, token = path_elements
- end
- repo.sub!(/^#{REPO_PREFIX}/, "")
+ return nil unless arg.is_a?(String)
+ return nil unless arg.downcase =~ HOMEBREW_TAP_CASK_REGEX
+ # eg caskroom/cask/google-chrome
+ # per https://github.com/Homebrew/brew/blob/master/docs/brew-tap.md
+ user, repo, token = arg.downcase.split("/")
odebug "[user, repo, token] might be [#{user}, #{repo}, #{token}]"
[user, repo, token]
end
diff --git a/Library/Homebrew/tap_constants.rb b/Library/Homebrew/tap_constants.rb
index 12de02f49..671081370 100644
--- a/Library/Homebrew/tap_constants.rb
+++ b/Library/Homebrew/tap_constants.rb
@@ -1,5 +1,7 @@
# match taps' formulae, e.g. someuser/sometap/someformula
HOMEBREW_TAP_FORMULA_REGEX = %r{^([\w-]+)/([\w-]+)/([\w+-.@]+)$}
+# match taps' casks, e.g. someuser/sometap/somecask
+HOMEBREW_TAP_CASK_REGEX = %r{^([\w-]+)/([\w-]+)/([a-z0-9\-]+)$}
# match taps' directory paths, e.g. HOMEBREW_LIBRARY/Taps/someuser/sometap
HOMEBREW_TAP_DIR_REGEX = %r{#{Regexp.escape(HOMEBREW_LIBRARY.to_s)}/Taps/([\w-]+)/([\w-]+)}
# match taps' formula paths, e.g. HOMEBREW_LIBRARY/Taps/someuser/sometap/someformula