aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2014-11-28 15:02:42 +0000
committerMike McQuaid2014-11-30 17:59:02 +0000
commit52cda8fd8040cbc9588ae64243af924f9fd15be4 (patch)
tree4f8fe9f4f5c6a40e7e61f857e29c557ed8a48508 /Library
parent264886cfc9cf0b2058827fb5b70b2731aed2b59f (diff)
downloadbrew-52cda8fd8040cbc9588ae64243af924f9fd15be4.tar.bz2
Allow searching/installing Homebrew Casks.
People want to install things like GIMP using Homebrew so let's make it easier for them to find a decent installation method. Closes Homebrew/homebrew#34496. Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/install.rb14
-rw-r--r--Library/Homebrew/cmd/search.rb8
-rw-r--r--Library/Homebrew/extend/ARGV.rb6
-rw-r--r--Library/Homebrew/tap_constants.rb2
-rw-r--r--Library/Homebrew/test/test_ARGV.rb5
5 files changed, 31 insertions, 4 deletions
diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb
index eb93d380b..c2789a40e 100644
--- a/Library/Homebrew/cmd/install.rb
+++ b/Library/Homebrew/cmd/install.rb
@@ -19,7 +19,8 @@ module Homebrew
msg = blacklisted? name
raise "No available formula for #{name}\n#{msg}" if msg
end
- if not File.exist? name and name =~ HOMEBREW_TAP_FORMULA_REGEX then
+ if !File.exist?(name) && (name =~ HOMEBREW_TAP_FORMULA_REGEX \
+ || name =~ HOMEBREW_CASK_TAP_FORMULA_REGEX)
install_tap $1, $2
end
end unless ARGV.force?
@@ -27,6 +28,17 @@ module Homebrew
begin
formulae = []
+ if ARGV.casks.any?
+ brew_cask = Formulary.factory("brew-cask")
+ install_formula(brew_cask) unless brew_cask.installed?
+
+ ARGV.casks.each do |c|
+ cmd = "brew", "cask", "install", c
+ ohai cmd.join " "
+ system *cmd
+ end
+ end
+
ARGV.formulae.each do |f|
# Building head-only without --HEAD is an error
if not ARGV.build_head? and f.stable.nil?
diff --git a/Library/Homebrew/cmd/search.rb b/Library/Homebrew/cmd/search.rb
index d8a68fcec..b05ceec7c 100644
--- a/Library/Homebrew/cmd/search.rb
+++ b/Library/Homebrew/cmd/search.rb
@@ -76,6 +76,7 @@ module Homebrew
%w{Homebrew binary},
%w{Homebrew python},
%w{Homebrew php},
+ %w{Caskroom cask},
]
def query_regexp(query)
@@ -94,7 +95,10 @@ module Homebrew
end
def search_tap user, repo, rx
- return [] if (HOMEBREW_LIBRARY/"Taps/#{user.downcase}/homebrew-#{repo.downcase}").directory?
+ if (HOMEBREW_LIBRARY/"Taps/#{user.downcase}/homebrew-#{repo.downcase}").directory? && \
+ "#{user}/#{repo}" != "Caskroom/cask"
+ return []
+ end
results = []
tree = {}
@@ -113,7 +117,7 @@ module Homebrew
end
end
- paths = tree["Formula"] || tree["HomebrewFormula"] || tree["."] || []
+ paths = tree["Formula"] || tree["HomebrewFormula"] || tree["Casks"] || tree["."] || []
paths.each do |path|
name = File.basename(path, ".rb")
results << "#{user}/#{repo}/#{name}" if rx === name
diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb
index 669cb5d02..0e2bfac51 100644
--- a/Library/Homebrew/extend/ARGV.rb
+++ b/Library/Homebrew/extend/ARGV.rb
@@ -13,7 +13,11 @@ module HomebrewArgvExtension
def formulae
require "formula"
- @formulae ||= downcased_unique_named.map { |name| Formulary.factory(name, spec) }
+ @formulae ||= (downcased_unique_named - casks).map { |name| Formulary.factory(name, spec) }
+ end
+
+ def casks
+ @casks ||= downcased_unique_named.grep HOMEBREW_CASK_TAP_FORMULA_REGEX
end
def kegs
diff --git a/Library/Homebrew/tap_constants.rb b/Library/Homebrew/tap_constants.rb
index 2aed1887d..4392f5f92 100644
--- a/Library/Homebrew/tap_constants.rb
+++ b/Library/Homebrew/tap_constants.rb
@@ -6,3 +6,5 @@ HOMEBREW_TAP_FORMULA_REGEX = %r{^([\w-]+)/([\w-]+)/([\w+-.]+)$}
HOMEBREW_TAP_DIR_REGEX = %r{#{Regexp.escape(HOMEBREW_LIBRARY.to_s)}/Taps/([\w-]+)/([\w-]+)}
# match taps' formula path, e.g. HOMEBREW_LIBRARY/Taps/someuser/sometap/someformula
HOMEBREW_TAP_PATH_REGEX = Regexp.new(HOMEBREW_TAP_DIR_REGEX.source + %r{/(.*)}.source)
+# match the default brew-cask tap e.g. Caskroom/cask
+HOMEBREW_CASK_TAP_FORMULA_REGEX = %r{^(Caskroom)/(cask)/([\w+-.]+)$}
diff --git a/Library/Homebrew/test/test_ARGV.rb b/Library/Homebrew/test/test_ARGV.rb
index fe50621cd..e02c7040e 100644
--- a/Library/Homebrew/test/test_ARGV.rb
+++ b/Library/Homebrew/test/test_ARGV.rb
@@ -11,6 +11,11 @@ class ArgvExtensionTests < Homebrew::TestCase
assert_raises(FormulaUnavailableError) { @argv.formulae }
end
+ def test_argv_casks
+ @argv.unshift 'mxcl'
+ assert_equal [], @argv.casks
+ end
+
def test_argv_kegs
keg = HOMEBREW_CELLAR + "mxcl/10.0"
keg.mkpath