Add --variations option to brew info

This commit is contained in:
Rylan Polster 2022-07-21 16:41:15 +02:00
parent eab3d077bc
commit f3e34230ad
No known key found for this signature in database
GPG Key ID: 46A744940CFF4D64
10 changed files with 34 additions and 9 deletions

View File

@ -219,7 +219,7 @@ module Cask
end
alias == eql?
def to_hash
def to_h
{
"token" => token,
"full_token" => full_name,
@ -243,8 +243,8 @@ module Cask
}
end
def to_h
hash = to_hash
def to_hash_with_variations
hash = to_h
variations = {}
hash_keys_to_skip = %w[outdated installed versions]
@ -260,7 +260,7 @@ module Cask
refresh
to_hash.each do |key, value|
to_h.each do |key, value|
next if hash_keys_to_skip.include? key
next if value.to_s == hash[key].to_s

View File

@ -61,6 +61,9 @@ module Homebrew
switch "--all",
depends_on: "--json",
description: "Print JSON of all available formulae."
switch "--variations",
depends_on: "--json",
description: "Include the variations hash in each formula's JSON output."
switch "-v", "--verbose",
description: "Show more verbose analytics data for <formula>."
switch "--formula", "--formulae",
@ -202,6 +205,8 @@ module Homebrew
if args.bottle?
formulae.map(&:to_recursive_bottle_hash)
elsif args.variations?
formulae.map(&:to_hash_with_variations)
else
formulae.map(&:to_hash)
end
@ -216,6 +221,12 @@ module Homebrew
if args.bottle?
{ "formulae" => formulae.map(&:to_recursive_bottle_hash) }
elsif args.variations?
opoo "a"
{
"formulae" => formulae.map(&:to_hash_with_variations),
"casks" => casks.map(&:to_hash_with_variations),
}
else
{
"formulae" => formulae.map(&:to_hash),

View File

@ -1909,7 +1909,7 @@ class Formula
end
# @private
def to_hash_without_variations
def to_hash
dependencies = deps
hsh = {
@ -2006,15 +2006,15 @@ class Formula
end
# @private
def to_hash
hash = to_hash_without_variations
def to_hash_with_variations
hash = to_hash
variations = {}
os_versions = [*MacOSVersions::SYMBOLS.keys, :linux]
if path.exist? && self.class.on_system_blocks_exist?
formula_contents = path.read
[:arm64, :x86_64].each do |arch|
[:arm, :intel].each do |arch|
os_versions.each do |os_name|
bottle_tag = Utils::Bottles::Tag.new(system: os_name, arch: arch)
next unless bottle_tag.valid_combination?
@ -2028,7 +2028,7 @@ class Formula
variations_formula = variations_formula_class.new(name, path, :stable,
alias_path: alias_path, force_bottle: force_bottle)
variations_formula.to_hash_without_variations.each do |key, value|
variations_formula.to_hash.each do |key, value|
next if value.to_s == hash[key].to_s
variations[bottle_tag.to_sym] ||= {}

View File

@ -49,6 +49,7 @@ class Formula
def env; end
def conflicts; end
def self.on_system_blocks_exist?; end
# This method is included by `OnSystem`
def self.on_macos(&block); end
end

View File

@ -169,6 +169,7 @@ module Utils
[system, arch].hash
end
sig { returns(Symbol) }
def standardized_arch
return :x86_64 if [:x86_64, :intel].include? arch
return :arm64 if [:arm64, :arm].include? arch

View File

@ -312,6 +312,7 @@ _brew_abv() {
--installed
--json
--quiet
--variations
--verbose
"
return
@ -1044,6 +1045,7 @@ _brew_info() {
--installed
--json
--quiet
--variations
--verbose
"
return

View File

@ -307,6 +307,7 @@ __fish_brew_complete_arg 'abv' -l help -d 'Show this message'
__fish_brew_complete_arg 'abv' -l installed -d 'Print JSON of formulae that are currently installed'
__fish_brew_complete_arg 'abv' -l json -d 'Print a JSON representation. Currently the default value for version is `v1` for formula. For formula and cask use `v2`. See the docs for examples of using the JSON output: https://docs.brew.sh/Querying-Brew'
__fish_brew_complete_arg 'abv' -l quiet -d 'Make some output more quiet'
__fish_brew_complete_arg 'abv' -l variations -d 'Include the variations hash in each formula\'s JSON output'
__fish_brew_complete_arg 'abv' -l verbose -d 'Show more verbose analytics data for formula'
__fish_brew_complete_arg 'abv; and not __fish_seen_argument -l cask -l casks' -a '(__fish_brew_suggest_formulae_all)'
__fish_brew_complete_arg 'abv; and not __fish_seen_argument -l formula -l formulae' -a '(__fish_brew_suggest_casks_all)'
@ -757,6 +758,7 @@ __fish_brew_complete_arg 'info' -l help -d 'Show this message'
__fish_brew_complete_arg 'info' -l installed -d 'Print JSON of formulae that are currently installed'
__fish_brew_complete_arg 'info' -l json -d 'Print a JSON representation. Currently the default value for version is `v1` for formula. For formula and cask use `v2`. See the docs for examples of using the JSON output: https://docs.brew.sh/Querying-Brew'
__fish_brew_complete_arg 'info' -l quiet -d 'Make some output more quiet'
__fish_brew_complete_arg 'info' -l variations -d 'Include the variations hash in each formula\'s JSON output'
__fish_brew_complete_arg 'info' -l verbose -d 'Show more verbose analytics data for formula'
__fish_brew_complete_arg 'info; and not __fish_seen_argument -l cask -l casks' -a '(__fish_brew_suggest_formulae_all)'
__fish_brew_complete_arg 'info; and not __fish_seen_argument -l formula -l formulae' -a '(__fish_brew_suggest_casks_all)'

View File

@ -382,6 +382,7 @@ _brew_abv() {
'(--all)--installed[Print JSON of formulae that are currently installed]' \
'--json[Print a JSON representation. Currently the default value for version is `v1` for formula. For formula and cask use `v2`. See the docs for examples of using the JSON output: https://docs.brew.sh/Querying-Brew]' \
'--quiet[Make some output more quiet]' \
'--variations[Include the variations hash in each formula'\''s JSON output]' \
'--verbose[Show more verbose analytics data for formula]' \
- formula \
'(--cask)--formula[Treat all named arguments as formulae]' \
@ -931,6 +932,7 @@ _brew_info() {
'(--all)--installed[Print JSON of formulae that are currently installed]' \
'--json[Print a JSON representation. Currently the default value for version is `v1` for formula. For formula and cask use `v2`. See the docs for examples of using the JSON output: https://docs.brew.sh/Querying-Brew]' \
'--quiet[Make some output more quiet]' \
'--variations[Include the variations hash in each formula'\''s JSON output]' \
'--verbose[Show more verbose analytics data for formula]' \
- formula \
'(--cask)--formula[Treat all named arguments as formulae]' \

View File

@ -295,6 +295,8 @@ If a *`formula`* or *`cask`* is provided, show summary of information about it.
Print JSON of formulae that are currently installed.
* `--all`:
Print JSON of all available formulae.
* `--variations`:
Include the variations hash in each formula's JSON output.
* `-v`, `--verbose`:
Show more verbose analytics data for *`formula`*.
* `--formula`:

View File

@ -385,6 +385,10 @@ Print JSON of formulae that are currently installed\.
Print JSON of all available formulae\.
.
.TP
\fB\-\-variations\fR
Include the variations hash in each formula\'s JSON output\.
.
.TP
\fB\-v\fR, \fB\-\-verbose\fR
Show more verbose analytics data for \fIformula\fR\.
.