Merge pull request #1334 from jawshooah/cask/fix-tap-regex
hbc/qualified_token: simplify token parsing
This commit is contained in:
commit
3f3fa4d0f7
@ -1,37 +1,9 @@
|
|||||||
module Hbc
|
module Hbc
|
||||||
module QualifiedToken
|
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)
|
def self.parse(arg)
|
||||||
return nil unless arg.is_a?(String) && arg.downcase =~ /^#{QUALIFIED_TOKEN_REGEX}$/
|
return nil unless arg.is_a?(String)
|
||||||
path_elements = arg.downcase.split("/")
|
return nil unless match = arg.downcase.match(HOMEBREW_TAP_CASK_REGEX)
|
||||||
if path_elements.count == 2
|
user, repo, token = match.captures
|
||||||
# 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}/, "")
|
|
||||||
odebug "[user, repo, token] might be [#{user}, #{repo}, #{token}]"
|
odebug "[user, repo, token] might be [#{user}, #{repo}, #{token}]"
|
||||||
[user, repo, token]
|
[user, repo, token]
|
||||||
end
|
end
|
||||||
|
|||||||
@ -76,7 +76,7 @@ module Homebrew
|
|||||||
unless ARGV.force?
|
unless ARGV.force?
|
||||||
ARGV.named.each do |name|
|
ARGV.named.each do |name|
|
||||||
next if File.exist?(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
|
next
|
||||||
end
|
end
|
||||||
tap = Tap.fetch($1, $2)
|
tap = Tap.fetch($1, $2)
|
||||||
|
|||||||
@ -58,7 +58,7 @@ module HomebrewArgvExtension
|
|||||||
end
|
end
|
||||||
|
|
||||||
def casks
|
def casks
|
||||||
@casks ||= downcased_unique_named.grep HOMEBREW_CASK_TAP_FORMULA_REGEX
|
@casks ||= downcased_unique_named.grep HOMEBREW_CASK_TAP_CASK_REGEX
|
||||||
end
|
end
|
||||||
|
|
||||||
def kegs
|
def kegs
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
# match taps' formulae, e.g. someuser/sometap/someformula
|
# match taps' formulae, e.g. someuser/sometap/someformula
|
||||||
HOMEBREW_TAP_FORMULA_REGEX = %r{^([\w-]+)/([\w-]+)/([\w+-.@]+)$}
|
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
|
# 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-]+)}
|
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
|
# 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)
|
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
|
# 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+-.]+)$}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user