aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorMarkus Reiter2016-08-25 05:19:14 +0200
committerMarkus Reiter2016-09-05 21:43:03 +0200
commit89a63fb1778dbfd4140a774c32dededf5b2a4585 (patch)
treeab388940a1833598d79696ba98a6e5bb74c0a5f0 /Library/Homebrew
parent7820489831b049a2fc6fd4ef0c5964e63e78f778 (diff)
downloadbrew-89a63fb1778dbfd4140a774c32dededf5b2a4585.tar.bz2
Add `cask_files` method to `Tap` class.
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/cask/lib/hbc/cli/doctor.rb12
-rw-r--r--Library/Homebrew/cask/lib/hbc/cli/search.rb2
-rw-r--r--Library/Homebrew/cask/lib/hbc/scopes.rb26
-rw-r--r--Library/Homebrew/tap.rb15
4 files changed, 23 insertions, 32 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/cli/doctor.rb b/Library/Homebrew/cask/lib/hbc/cli/doctor.rb
index 857471420..2632bcaef 100644
--- a/Library/Homebrew/cask/lib/hbc/cli/doctor.rb
+++ b/Library/Homebrew/cask/lib/hbc/cli/doctor.rb
@@ -33,18 +33,14 @@ class Hbc::CLI::Doctor < Hbc::CLI::Base
end
def self.alt_taps
- Tap.select { |t| t.cask_dir.directory? && t != Hbc.default_tap }
+ Tap.select { |t| t.cask_dir && t != Hbc.default_tap }
.map(&:path)
end
def self.default_cask_count
- default_cask_count = notfound_string
- begin
- default_cask_count = Hbc.default_tap.cask_dir.children.count(&:file?)
- rescue StandardError
- default_cask_count = "0 #{error_string "Error reading #{Hbc.default_tap.path}"}"
- end
- default_cask_count
+ Hbc.default_tap.cask_files.count
+ rescue StandardError
+ "0 #{error_string "Error reading #{Hbc.default_tap.path}"}"
end
def self.homebrew_origin
diff --git a/Library/Homebrew/cask/lib/hbc/cli/search.rb b/Library/Homebrew/cask/lib/hbc/cli/search.rb
index c356128a6..2149a524b 100644
--- a/Library/Homebrew/cask/lib/hbc/cli/search.rb
+++ b/Library/Homebrew/cask/lib/hbc/cli/search.rb
@@ -21,7 +21,7 @@ class Hbc::CLI::Search < Hbc::CLI::Base
partial_matches = Hbc::CLI.nice_listing(Hbc.all_tokens).grep(%r{#{search_regexp}}i)
else
# suppressing search of the font Tap is a quick hack until behavior can be made configurable
- all_tokens = Hbc::CLI.nice_listing Hbc.all_tokens.reject { |t| %r{^caskroom/homebrew-fonts/}.match(t) }
+ all_tokens = Hbc::CLI.nice_listing Hbc.all_tokens.reject { |t| %r{^caskroom/fonts/}.match(t) }
simplified_tokens = all_tokens.map { |t| t.sub(%r{^.*\/}, "").gsub(%r{[^a-z0-9]+}i, "") }
simplified_search_term = search_term.sub(%r{\.rb$}i, "").gsub(%r{[^a-z0-9]+}i, "")
exact_match = simplified_tokens.grep(%r{^#{simplified_search_term}$}i) { |t| all_tokens[simplified_tokens.index(t)] }.first
diff --git a/Library/Homebrew/cask/lib/hbc/scopes.rb b/Library/Homebrew/cask/lib/hbc/scopes.rb
index 3fbb59d26..431c3ff47 100644
--- a/Library/Homebrew/cask/lib/hbc/scopes.rb
+++ b/Library/Homebrew/cask/lib/hbc/scopes.rb
@@ -10,29 +10,15 @@ module Hbc::Scopes
end
def all_tapped_cask_dirs
- @all_tapped_cask_dirs ||= Tap.names.map(&Tap.method(:fetch)).map(&:cask_dir)
- .unshift(default_tap.cask_dir) # optimization: place the default Tap first
- .uniq
- end
-
- def reset_all_tapped_cask_dirs
- # The memoized value should be reset when a Tap is added/removed
- # (which is a rare event in our codebase).
- @all_tapped_cask_dirs = nil
+ Tap.map(&:cask_dir).compact
end
def all_tokens
- cask_tokens = all_tapped_cask_dirs.map { |d| Dir.glob d.join("*.rb") }.flatten
- cask_tokens.map { |c|
- # => "/usr/local/Library/Taps/caskroom/example-tap/Casks/example.rb"
- c.sub!(%r{\.rb$}, "")
- # => ".../example"
- c = c.split("/").last 4
- # => ["caskroom", "example-tap", "Casks", "example"]
- c.delete_at(-2)
- # => ["caskroom", "example-tap", "example"]
- c.join "/"
- }
+ Tap.map { |t|
+ t.cask_files.map { |p|
+ "#{t.name}/#{File.basename(p, ".rb")}"
+ }
+ }.flatten
end
def installed
diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb
index 8dd7fd155..340f6eca3 100644
--- a/Library/Homebrew/tap.rb
+++ b/Library/Homebrew/tap.rb
@@ -290,13 +290,22 @@ class Tap
# path to the directory of all {Cask} files for this {Tap}.
def cask_dir
- @cask_dir ||= path/"Casks"
+ @cask_dir ||= [path/"Casks"].detect(&:directory?)
end
# an array of all {Formula} files of this {Tap}.
def formula_files
@formula_files ||= if formula_dir
- formula_dir.children.select { |p| p.extname == ".rb" }
+ formula_dir.children.select(&method(:formula_file?))
+ else
+ []
+ end
+ end
+
+ # an array of all {Cask} files of this {Tap}.
+ def cask_files
+ @cask_files ||= if cask_dir
+ cask_dir.children.select(&method(:cask_file?))
else
[]
end
@@ -311,7 +320,7 @@ class Tap
file.extname == ".rb" && file.parent == formula_dir
end
- # return true if given path would present a cask file in this {Tap}.
+ # return true if given path would present a {Cask} file in this {Tap}.
# accepts both absolute path and relative path (relative to this {Tap}'s path)
# @private
def cask_file?(file)