From 44f1354d63d8c95a61bb12353838c03e9abbebb6 Mon Sep 17 00:00:00 2001 From: Josh Hagins Date: Wed, 19 Oct 2016 11:54:30 -0400 Subject: hbc/qualified_token: simplify token parsing - Stop supporting archaic "user-repo/token" syntax - Move regex for parsing tapped Cask token to tap_constants --- Library/Homebrew/cask/lib/hbc/qualified_token.rb | 36 ++++-------------------- Library/Homebrew/tap_constants.rb | 2 ++ 2 files changed, 7 insertions(+), 31 deletions(-) (limited to 'Library') 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 -- cgit v1.2.3 From c7e6613f7b3144c9ee45d140978e713a89977d6d Mon Sep 17 00:00:00 2001 From: Josh Hagins Date: Wed, 19 Oct 2016 11:56:40 -0400 Subject: tap_constants: rename HOMEBREW_CASK_TAP_FORMULA_REGEX New name is HOMEBREW_CASK_TAP_CASK_REGEX --- Library/Homebrew/cmd/install.rb | 2 +- Library/Homebrew/extend/ARGV.rb | 2 +- Library/Homebrew/tap_constants.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'Library') diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 2c027a52e..0867e893a 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -76,7 +76,7 @@ module Homebrew unless ARGV.force? ARGV.named.each do |name| next if File.exist?(name) - if name !~ HOMEBREW_TAP_FORMULA_REGEX && name !~ HOMEBREW_CASK_TAP_FORMULA_REGEX + if name !~ HOMEBREW_TAP_FORMULA_REGEX && name !~ HOMEBREW_CASK_TAP_CASK_REGEX next end tap = Tap.fetch($1, $2) diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index f2f959f22..0adf8d548 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -58,7 +58,7 @@ module HomebrewArgvExtension end def casks - @casks ||= downcased_unique_named.grep HOMEBREW_CASK_TAP_FORMULA_REGEX + @casks ||= downcased_unique_named.grep HOMEBREW_CASK_TAP_CASK_REGEX end def kegs diff --git a/Library/Homebrew/tap_constants.rb b/Library/Homebrew/tap_constants.rb index 671081370..4ef8015c2 100644 --- a/Library/Homebrew/tap_constants.rb +++ b/Library/Homebrew/tap_constants.rb @@ -7,4 +7,4 @@ HOMEBREW_TAP_DIR_REGEX = %r{#{Regexp.escape(HOMEBREW_LIBRARY.to_s)}/Taps/([\w-]+ # match taps' formula paths, e.g. HOMEBREW_LIBRARY/Taps/someuser/sometap/someformula HOMEBREW_TAP_PATH_REGEX = Regexp.new(HOMEBREW_TAP_DIR_REGEX.source + %r{/(.*)}.source) # match the default and the versions brew-cask tap e.g. Caskroom/cask or Caskroom/versions -HOMEBREW_CASK_TAP_FORMULA_REGEX = %r{^([Cc]askroom)/(cask|versions)/([\w+-.]+)$} +HOMEBREW_CASK_TAP_CASK_REGEX = %r{^([Cc]askroom)/(cask|versions)/([\w+-.]+)$} -- cgit v1.2.3 From b2870c2480744aa7d202c4975e3169b05035f7ed Mon Sep 17 00:00:00 2001 From: Josh Hagins Date: Mon, 24 Oct 2016 09:50:33 -0400 Subject: hbc/qualified_token: use regex captures instead of String#split --- Library/Homebrew/cask/lib/hbc/qualified_token.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'Library') diff --git a/Library/Homebrew/cask/lib/hbc/qualified_token.rb b/Library/Homebrew/cask/lib/hbc/qualified_token.rb index 21fe99682..09eedef1b 100644 --- a/Library/Homebrew/cask/lib/hbc/qualified_token.rb +++ b/Library/Homebrew/cask/lib/hbc/qualified_token.rb @@ -2,10 +2,8 @@ module Hbc module QualifiedToken def self.parse(arg) 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("/") + return nil unless match = arg.downcase.match(HOMEBREW_TAP_CASK_REGEX) + user, repo, token = match.captures odebug "[user, repo, token] might be [#{user}, #{repo}, #{token}]" [user, repo, token] end -- cgit v1.2.3