Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add function to define path #10031

Merged
merged 3 commits into from Dec 28, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 5 additions & 0 deletions Library/Homebrew/cli/args.rb
Expand Up @@ -133,6 +133,11 @@ def context
Context::ContextStruct.new(debug: debug?, quiet: quiet?, verbose: verbose?)
end

def only_formula_or_cask
return :formula if formula? && !cask?
return :cask if cask? && !formula?
end

private

def option_to_name(option)
Expand Down
14 changes: 8 additions & 6 deletions Library/Homebrew/cli/named_args.rb
Expand Up @@ -29,6 +29,8 @@ def initialize(*args, parent: Args.new, override_spec: nil, force_bottle: false,
super(@args)
end

attr_reader :parent

def to_casks
@to_casks ||= to_formulae_and_casks(only: :cask).freeze
end
Expand All @@ -44,7 +46,7 @@ def to_formulae
params(only: T.nilable(Symbol), ignore_unavailable: T.nilable(T::Boolean), method: T.nilable(Symbol))
.returns(T::Array[T.any(Formula, Keg, Cask::Cask)])
end
def to_formulae_and_casks(only: nil, ignore_unavailable: nil, method: nil)
def to_formulae_and_casks(only: parent&.only_formula_or_cask, ignore_unavailable: nil, method: nil)
@to_formulae_and_casks ||= {}
@to_formulae_and_casks[only] ||= downcased_unique_named.flat_map do |name|
load_formula_or_cask(name, only: only, method: method)
Expand All @@ -53,14 +55,14 @@ def to_formulae_and_casks(only: nil, ignore_unavailable: nil, method: nil)
end.uniq.freeze
end

def to_formulae_to_casks(only: nil, method: nil)
def to_formulae_to_casks(only: parent&.only_formula_or_cask, method: nil)
@to_formulae_to_casks ||= {}
@to_formulae_to_casks[[method, only]] = to_formulae_and_casks(only: only, method: method)
.partition { |o| o.is_a?(Formula) }
.map(&:freeze).freeze
end

def to_formulae_and_casks_and_unavailable(only: nil, method: nil)
def to_formulae_and_casks_and_unavailable(only: parent&.only_formula_or_cask, method: nil)
@to_formulae_casks_unknowns ||= {}
@to_formulae_casks_unknowns[method] = downcased_unique_named.map do |name|
load_formula_or_cask(name, only: only, method: method)
Expand Down Expand Up @@ -118,7 +120,7 @@ def to_resolved_formulae
.freeze
end

def to_resolved_formulae_to_casks(only: nil)
def to_resolved_formulae_to_casks(only: parent&.only_formula_or_cask)
to_formulae_to_casks(only: only, method: :resolve)
end

Expand All @@ -130,7 +132,7 @@ def to_formulae_paths
# If a cask and formula with the same name exist, includes both their paths
# unless `only` is specified.
sig { params(only: T.nilable(Symbol), recurse_tap: T::Boolean).returns(T::Array[Pathname]) }
def to_paths(only: nil, recurse_tap: false)
def to_paths(only: parent&.only_formula_or_cask, recurse_tap: false)
@to_paths ||= {}
@to_paths[only] ||= downcased_unique_named.flat_map do |name|
if File.exist?(name)
Expand Down Expand Up @@ -177,7 +179,7 @@ def to_kegs
params(only: T.nilable(Symbol), ignore_unavailable: T.nilable(T::Boolean), all_kegs: T.nilable(T::Boolean))
.returns([T::Array[Keg], T::Array[Cask::Cask]])
end
def to_kegs_to_casks(only: nil, ignore_unavailable: nil, all_kegs: nil)
def to_kegs_to_casks(only: parent&.only_formula_or_cask, ignore_unavailable: nil, all_kegs: nil)
method = all_kegs ? :kegs : :keg
@to_kegs_to_casks ||= {}
@to_kegs_to_casks[method] ||=
Expand Down
5 changes: 1 addition & 4 deletions Library/Homebrew/cmd/fetch.rb
Expand Up @@ -69,9 +69,6 @@ def fetch_args
def fetch
args = fetch_args.parse

only = :formula if args.formula? && !args.cask?
only = :cask if args.cask? && !args.formula?

bucket = if args.deps?
args.named.to_formulae_and_casks.flat_map do |formula_or_cask|
case formula_or_cask
Expand All @@ -84,7 +81,7 @@ def fetch
end
end
else
args.named.to_formulae_and_casks(only: only)
args.named.to_formulae_and_casks
end.uniq

puts "Fetching: #{bucket * ", "}" if bucket.size > 1
Expand Down
4 changes: 1 addition & 3 deletions Library/Homebrew/cmd/home.rb
Expand Up @@ -35,9 +35,7 @@ def home
return
end

only = :formula if args.formula? && !args.cask?
only = :cask if args.cask? && !args.formula?
homepages = args.named.to_formulae_and_casks(only: only).map do |formula_or_cask|
homepages = args.named.to_formulae_and_casks.map do |formula_or_cask|
puts "Opening homepage for #{name_of(formula_or_cask)}"
formula_or_cask.homepage
end
Expand Down
29 changes: 13 additions & 16 deletions Library/Homebrew/cmd/info.rb
Expand Up @@ -75,9 +75,6 @@ def info_args
def info
args = info_args.parse

only = :formula if args.formula? && !args.cask?
only = :cask if args.cask? && !args.formula?

if args.analytics?
if args.days.present? && VALID_DAYS.exclude?(args.days)
raise UsageError, "--days must be one of #{VALID_DAYS.join(", ")}"
Expand All @@ -93,17 +90,17 @@ def info
end
end

print_analytics(args: args, only: only)
print_analytics(args: args)
elsif args.json
print_json(args: args, only: only)
print_json(args: args)
elsif args.github?
raise FormulaOrCaskUnspecifiedError if args.no_named?

exec_browser(*args.named.to_formulae_and_casks(only: only).map { |f| github_info(f) })
exec_browser(*args.named.to_formulae_and_casks.map { |f| github_info(f) })
elsif args.no_named?
print_statistics
else
print_info(args: args, only: only)
print_info(args: args)
end
end

Expand All @@ -115,14 +112,14 @@ def print_statistics
puts "#{count} #{"keg".pluralize(count)}, #{HOMEBREW_CELLAR.dup.abv}"
end

sig { params(args: CLI::Args, only: T.nilable(Symbol)).void }
def print_analytics(args:, only: nil)
sig { params(args: CLI::Args).void }
def print_analytics(args:)
if args.no_named?
Utils::Analytics.output(args: args)
return
end

args.named.to_formulae_and_casks_and_unavailable(only: only).each_with_index do |obj, i|
args.named.to_formulae_and_casks_and_unavailable.each_with_index do |obj, i|
puts unless i.zero?

case obj
Expand All @@ -138,9 +135,9 @@ def print_analytics(args:, only: nil)
end
end

sig { params(args: CLI::Args, only: T.nilable(Symbol)).void }
def print_info(args:, only: nil)
args.named.to_formulae_and_casks_and_unavailable(only: only).each_with_index do |obj, i|
sig { params(args: CLI::Args).void }
def print_info(args:)
args.named.to_formulae_and_casks_and_unavailable.each_with_index do |obj, i|
puts unless i.zero?

case obj
Expand Down Expand Up @@ -172,8 +169,8 @@ def json_version(version)
version_hash[version]
end

sig { params(args: CLI::Args, only: T.nilable(Symbol)).void }
def print_json(args:, only: nil)
sig { params(args: CLI::Args).void }
def print_json(args:)
raise FormulaOrCaskUnspecifiedError if !(args.all? || args.installed?) && args.no_named?

json = case json_version(args.json)
Expand All @@ -195,7 +192,7 @@ def print_json(args:, only: nil)
elsif args.installed?
[Formula.installed.sort, Cask::Caskroom.casks.sort_by(&:full_name)]
else
args.named.to_formulae_to_casks(only: only)
args.named.to_formulae_to_casks
end

{
Expand Down
5 changes: 1 addition & 4 deletions Library/Homebrew/cmd/install.rb
Expand Up @@ -131,9 +131,6 @@ def install_args
def install
args = install_args.parse

only = :formula if args.formula? && !args.cask?
only = :cask if args.cask? && !args.formula?

args.named.each do |name|
next if File.exist?(name)
next if name !~ HOMEBREW_TAP_FORMULA_REGEX && name !~ HOMEBREW_CASK_TAP_CASK_REGEX
Expand All @@ -151,7 +148,7 @@ def install
EOS
end

formulae, casks = args.named.to_formulae_and_casks(only: only)
formulae, casks = args.named.to_formulae_and_casks
.partition { |formula_or_cask| formula_or_cask.is_a?(Formula) }

if casks.any?
Expand Down
7 changes: 4 additions & 3 deletions Library/Homebrew/cmd/uninstall.rb
Expand Up @@ -47,10 +47,11 @@ def uninstall_args
def uninstall
args = uninstall_args.parse

only = :formula if args.formula? && !args.cask?
only = :cask if args.cask? && !args.formula?
all_kegs, casks = args.named.to_kegs_to_casks(
ignore_unavailable: args.force?,
all_kegs: args.force?,
)

all_kegs, casks = args.named.to_kegs_to_casks(only: only, ignore_unavailable: args.force?, all_kegs: args.force?)
kegs_by_rack = all_kegs.group_by(&:rack)

Uninstall.uninstall_kegs(
Expand Down
5 changes: 1 addition & 4 deletions Library/Homebrew/cmd/upgrade.rb
Expand Up @@ -95,10 +95,7 @@ def upgrade_args
def upgrade
args = upgrade_args.parse

only = :formula if args.formula? && !args.cask?
only = :cask if args.cask? && !args.formula?

formulae, casks = args.named.to_resolved_formulae_to_casks(only: only)
formulae, casks = args.named.to_resolved_formulae_to_casks
# If one or more formulae are specified, but no casks were
# specified, we want to make note of that so we don't
# try to upgrade all outdated casks.
Expand Down
5 changes: 1 addition & 4 deletions Library/Homebrew/dev-cmd/audit.rb
Expand Up @@ -110,9 +110,6 @@ def audit
git = args.git?
skip_style = args.skip_style? || args.no_named? || args.tap

only = :formula if args.formula? && !args.cask?
only = :cask if args.cask? && !args.formula?

ENV.activate_extensions!
ENV.setup_build_environment

Expand All @@ -126,7 +123,7 @@ def audit
elsif args.no_named?
[Formula, Cask::Cask.to_a]
else
args.named.to_formulae_and_casks(only: only)
args.named.to_formulae_and_casks
.partition { |formula_or_cask| formula_or_cask.is_a?(Formula) }
end
style_files = args.named.to_paths unless skip_style
Expand Down
5 changes: 1 addition & 4 deletions Library/Homebrew/dev-cmd/cat.rb
Expand Up @@ -30,9 +30,6 @@ def cat_args
def cat
args = cat_args.parse

only = :formula if args.formula? && !args.cask?
only = :cask if args.cask? && !args.formula?

cd HOMEBREW_REPOSITORY
pager = if Homebrew::EnvConfig.bat?
ENV["BAT_CONFIG_PATH"] = Homebrew::EnvConfig.bat_config_path
Expand All @@ -41,6 +38,6 @@ def cat
"cat"
end

safe_system pager, args.named.to_paths(only: only).first
safe_system pager, args.named.to_paths.first
end
end
5 changes: 1 addition & 4 deletions Library/Homebrew/dev-cmd/edit.rb
Expand Up @@ -31,9 +31,6 @@ def edit_args
def edit
args = edit_args.parse

only = :formula if args.formula? && !args.cask?
only = :cask if args.cask? && !args.formula?

unless (HOMEBREW_REPOSITORY/".git").directory?
raise <<~EOS
Changes will be lost!
Expand All @@ -42,7 +39,7 @@ def edit
EOS
end

paths = args.named.to_paths(only: only).select do |path|
paths = args.named.to_paths.select do |path|
next path if path.exist?

raise UsageError, "#{path} doesn't exist on disk. " \
Expand Down
5 changes: 1 addition & 4 deletions Library/Homebrew/dev-cmd/style.rb
Expand Up @@ -48,13 +48,10 @@ def style_args
def style
args = style_args.parse

only = :formula if args.formula? && !args.cask?
only = :cask if args.cask? && !args.formula?

target = if args.no_named?
nil
else
args.named.to_paths(only: only)
args.named.to_paths
end

only_cops = args.only_cops
Expand Down