cmd/info: Add --json=v2 for outputing formula and cask json
This commit is contained in:
parent
9a8f4c7c96
commit
4c36cf2e8e
@ -38,8 +38,16 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def to_formulae_to_casks(method: nil, only: nil)
|
||||||
|
@to_formulae_to_casks ||= {}
|
||||||
|
@to_formulae_to_casks[[method, only]] = to_formulae_and_casks(method: method, only: only)
|
||||||
|
.partition { |o| o.is_a?(Formula) }
|
||||||
|
.map(&:freeze).freeze
|
||||||
|
end
|
||||||
|
|
||||||
def to_formulae_casks_unknowns(method: nil)
|
def to_formulae_casks_unknowns(method: nil)
|
||||||
downcased_unique_named.map do |name|
|
@to_formulae_casks_unknowns ||= {}
|
||||||
|
@to_formulae_casks_unknowns[method] = downcased_unique_named.map do |name|
|
||||||
load_formula_or_cask(name, method: method)
|
load_formula_or_cask(name, method: method)
|
||||||
rescue FormulaOrCaskUnavailableError => e
|
rescue FormulaOrCaskUnavailableError => e
|
||||||
e
|
e
|
||||||
@ -88,9 +96,7 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
|
|
||||||
def to_resolved_formulae_to_casks(only: nil)
|
def to_resolved_formulae_to_casks(only: nil)
|
||||||
@to_resolved_formulae_to_casks ||= to_formulae_and_casks(method: :resolve, only: only)
|
to_formulae_to_casks(method: :resolve, only: only)
|
||||||
.partition { |o| o.is_a?(Formula) }
|
|
||||||
.map(&:freeze).freeze
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Convert named arguments to `Tap`, `Formula` or `Cask` objects.
|
# Convert named arguments to `Tap`, `Formula` or `Cask` objects.
|
||||||
|
@ -81,9 +81,6 @@ module Homebrew
|
|||||||
|
|
||||||
print_analytics(args: args)
|
print_analytics(args: args)
|
||||||
elsif args.json
|
elsif args.json
|
||||||
raise UsageError, "invalid JSON version: #{args.json}" unless ["v1", true].include? args.json
|
|
||||||
raise FormulaUnspecifiedError if !(args.all? || args.installed?) && args.no_named?
|
|
||||||
|
|
||||||
print_json(args: args)
|
print_json(args: args)
|
||||||
elsif args.github?
|
elsif args.github?
|
||||||
raise FormulaOrCaskUnspecifiedError if args.no_named?
|
raise FormulaOrCaskUnspecifiedError if args.no_named?
|
||||||
@ -143,15 +140,49 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def json_version(version)
|
||||||
|
version_hash = {
|
||||||
|
true => :default,
|
||||||
|
"v1" => :v1,
|
||||||
|
"v2" => :v2,
|
||||||
|
}
|
||||||
|
|
||||||
|
raise UsageError, "invalid JSON version: #{version}" unless version_hash.include?(version)
|
||||||
|
|
||||||
|
version_hash[version]
|
||||||
|
end
|
||||||
|
|
||||||
def print_json(args:)
|
def print_json(args:)
|
||||||
ff = if args.all?
|
raise FormulaOrCaskUnspecifiedError if !(args.all? || args.installed?) && args.no_named?
|
||||||
Formula.sort
|
|
||||||
elsif args.installed?
|
json = case json_version(args.json)
|
||||||
Formula.installed.sort
|
when :v1, :default
|
||||||
|
formulae = if args.all?
|
||||||
|
Formula.sort
|
||||||
|
elsif args.installed?
|
||||||
|
Formula.installed.sort
|
||||||
|
else
|
||||||
|
args.named.to_formulae
|
||||||
|
end
|
||||||
|
|
||||||
|
formulae.map(&:to_hash)
|
||||||
|
when :v2
|
||||||
|
formulae, casks = if args.all?
|
||||||
|
[Formula.sort, Cask::Cask.to_a.sort_by(&:full_name)]
|
||||||
|
elsif args.installed?
|
||||||
|
[Formula.installed.sort, Cask::Caskroom.casks.sort_by(&:full_name)]
|
||||||
|
else
|
||||||
|
args.named.to_formulae_to_casks
|
||||||
|
end
|
||||||
|
|
||||||
|
{
|
||||||
|
"formulae" => formulae.map(&:to_hash),
|
||||||
|
"casks" => casks.map(&:to_h),
|
||||||
|
}
|
||||||
else
|
else
|
||||||
args.named.to_formulae
|
raise
|
||||||
end
|
end
|
||||||
json = ff.map(&:to_hash)
|
|
||||||
puts JSON.generate(json)
|
puts JSON.generate(json)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user