2016-09-24 13:52:43 +02:00
|
|
|
module Hbc
|
|
|
|
module Scopes
|
|
|
|
def self.included(base)
|
|
|
|
base.extend(ClassMethods)
|
2016-08-18 22:11:42 +03:00
|
|
|
end
|
|
|
|
|
2016-09-24 13:52:43 +02:00
|
|
|
module ClassMethods
|
|
|
|
def all
|
|
|
|
@all_casks ||= {}
|
|
|
|
all_tokens.map { |t| @all_casks[t] ||= load(t) }
|
|
|
|
end
|
2016-08-18 22:11:42 +03:00
|
|
|
|
2016-09-24 13:52:43 +02:00
|
|
|
def all_tapped_cask_dirs
|
2017-03-12 19:18:41 +01:00
|
|
|
Tap.map(&:cask_dir).select(&:directory?)
|
2016-09-24 13:52:43 +02:00
|
|
|
end
|
2016-08-18 22:11:42 +03:00
|
|
|
|
2016-09-24 13:52:43 +02:00
|
|
|
def all_tokens
|
2017-03-12 19:18:41 +01:00
|
|
|
Tap.flat_map do |t|
|
2016-10-23 14:44:14 +02:00
|
|
|
t.cask_files.map do |p|
|
2016-09-24 13:52:43 +02:00
|
|
|
"#{t.name}/#{File.basename(p, ".rb")}"
|
2016-10-23 14:44:14 +02:00
|
|
|
end
|
2017-03-12 19:18:41 +01:00
|
|
|
end
|
2016-09-24 13:52:43 +02:00
|
|
|
end
|
2016-08-18 22:11:42 +03:00
|
|
|
|
2016-09-24 13:52:43 +02:00
|
|
|
def installed
|
|
|
|
# Hbc.load has some DWIM which is slow. Optimize here
|
|
|
|
# by spoon-feeding Hbc.load fully-qualified paths.
|
|
|
|
# TODO: speed up Hbc::Source::Tapped (main perf drag is calling Hbc.all_tokens repeatedly)
|
|
|
|
# TODO: ability to specify expected source when calling Hbc.load (minor perf benefit)
|
|
|
|
Pathname.glob(caskroom.join("*"))
|
2016-10-23 14:44:14 +02:00
|
|
|
.map do |caskroom_path|
|
2016-09-24 13:52:43 +02:00
|
|
|
token = caskroom_path.basename.to_s
|
|
|
|
|
2016-10-23 14:44:14 +02:00
|
|
|
path_to_cask = all_tapped_cask_dirs.find do |tap_dir|
|
2016-09-24 13:52:43 +02:00
|
|
|
tap_dir.join("#{token}.rb").exist?
|
2016-10-23 14:44:14 +02:00
|
|
|
end
|
2016-08-18 22:11:42 +03:00
|
|
|
|
2016-09-24 13:52:43 +02:00
|
|
|
if path_to_cask
|
|
|
|
Hbc.load(path_to_cask.join("#{token}.rb"))
|
|
|
|
else
|
|
|
|
Hbc.load(token)
|
|
|
|
end
|
2016-10-23 14:44:14 +02:00
|
|
|
end
|
2016-09-24 13:52:43 +02:00
|
|
|
end
|
2016-08-18 22:11:42 +03:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|