cli/parser: convert switch env values to boolean

Since switch values are boolean, we should be returning the environment
variable's presence instead of its string value.

Fixes #20531.
This commit is contained in:
Ruoyu Zhong 2025-08-22 01:59:54 +08:00
parent e910f91124
commit 33a2f410af
No known key found for this signature in database
2 changed files with 6 additions and 1 deletions

View File

@ -231,7 +231,8 @@ module Homebrew
end
env_value = value_for_env(env)
set_switch(*names, value: env_value, from: :env) unless env_value.nil?
value = env_value&.present?
set_switch(*names, value:, from: :env) unless value.nil?
end
alias switch_option switch

View File

@ -10,12 +10,15 @@ RSpec.describe Homebrew::CLI::Parser do
described_class.new(Cmd) do
switch "--more-verbose", description: "Flag for higher verbosity"
switch "--pry", env: :pry
switch "--bar", env: :bar
switch "--hidden", hidden: true
end
end
before do
allow(Homebrew::EnvConfig).to receive(:pry?).and_return(true)
allow(ENV).to receive(:fetch).and_call_original
allow(ENV).to receive(:fetch).with("HOMEBREW_BAR", nil).and_return("1")
end
context "when using binary options" do
@ -113,6 +116,7 @@ RSpec.describe Homebrew::CLI::Parser do
it "maps environment var to an option" do
args = parser.parse([])
expect(args.pry?).to be true
expect(args.bar?).to be true
end
end