Parser: Add env named argument for switch to check environment variables

This commit is contained in:
Gautham Goli 2018-03-25 11:04:18 +05:30
parent 164f47a108
commit 99438e8e44
4 changed files with 21 additions and 17 deletions

View File

@ -10,13 +10,12 @@ module Homebrew
instance_eval(&block)
end
def switch(*names, description: nil)
def switch(*names, description: nil, env: nil)
description = option_to_description(*names) if description.nil?
@parser.on(*names, description) do
names.each do |name|
@parsed_args["#{option_to_name(name)}?"] = true
end
enable_switch(*names)
end
enable_switch(*names) if !env.nil? && !ENV["HOMEBREW_#{env.to_s.upcase}"].nil?
end
def comma_array(name, description: nil)
@ -50,6 +49,14 @@ module Homebrew
@parser.parse!(cmdline_args)
@parsed_args
end
private
def enable_switch(*names)
names.each do |name|
@parsed_args["#{option_to_name(name)}?"] = true
end
end
end
end
end

View File

@ -6,7 +6,6 @@
#: used instead of irb.
require "cli_parser"
require "utils/env"
class Symbol
def f(*args)
@ -26,7 +25,7 @@ module Homebrew
def irb
args = Homebrew::CLI::Parser.new do
switch "--examples"
switch "--pry"
switch "--pry", env: :pry
end.parse
if args.examples?
@ -37,7 +36,7 @@ module Homebrew
return
end
if args.pry? || Utils::EnvVars.pry?
if args.pry?
Homebrew.install_gem_setup_path! "pry"
require "pry"
Pry.config.prompt_name = "brew"
@ -53,7 +52,7 @@ module Homebrew
ohai "Interactive Homebrew Shell"
puts "Example commands available with: brew irb --examples"
if args.pry? || Utils::EnvVars.pry?
if args.pry?
Pry.start
else
IRB.start

View File

@ -6,6 +6,7 @@ describe Homebrew::CLI::Parser do
described_class.new do
switch "-v", "--verbose", description: "Flag for verbosity"
switch "--more-verbose", description: "Flag for higher verbosity"
switch "--pry", env: :pry
end
}
@ -34,6 +35,12 @@ describe Homebrew::CLI::Parser do
it "raises an exception when an invalid option is passed" do
expect { parser.parse(["--random"]) }.to raise_error(OptionParser::InvalidOption, /--random/)
end
it "maps environment var to an option" do
allow(ENV).to receive(:[]).with("HOMEBREW_PRY").and_return("1")
args = parser.parse([])
expect(args.pry?).to be true
end
end
describe "test long flag options" do

View File

@ -1,9 +0,0 @@
module Utils
module EnvVars
class << self
def pry?
!ENV["HOMEBREW_PRY"].nil?
end
end
end
end