Merge pull request #3971 from GauthamGoli/irb-args
irb: Use Parser to parse args
This commit is contained in:
commit
ee39940196
@ -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
|
||||
|
||||
@ -5,6 +5,8 @@
|
||||
#: If `--pry` is passed or HOMEBREW_PRY is set, pry will be
|
||||
#: used instead of irb.
|
||||
|
||||
require "cli_parser"
|
||||
|
||||
class Symbol
|
||||
def f(*args)
|
||||
Formulary.factory(to_s, *args)
|
||||
@ -21,7 +23,12 @@ module Homebrew
|
||||
module_function
|
||||
|
||||
def irb
|
||||
if ARGV.include? "--examples"
|
||||
args = Homebrew::CLI::Parser.new do
|
||||
switch "--examples"
|
||||
switch "--pry", env: :pry
|
||||
end.parse
|
||||
|
||||
if args.examples?
|
||||
puts "'v8'.f # => instance of the v8 formula"
|
||||
puts ":hub.f.installed?"
|
||||
puts ":lua.f.methods - 1.methods"
|
||||
@ -29,7 +36,7 @@ module Homebrew
|
||||
return
|
||||
end
|
||||
|
||||
if ARGV.pry?
|
||||
if args.pry?
|
||||
Homebrew.install_gem_setup_path! "pry"
|
||||
require "pry"
|
||||
Pry.config.prompt_name = "brew"
|
||||
@ -45,7 +52,7 @@ module Homebrew
|
||||
|
||||
ohai "Interactive Homebrew Shell"
|
||||
puts "Example commands available with: brew irb --examples"
|
||||
if ARGV.pry?
|
||||
if args.pry?
|
||||
Pry.start
|
||||
else
|
||||
IRB.start
|
||||
|
||||
@ -268,10 +268,6 @@ module HomebrewArgvExtension
|
||||
include? "--fetch-HEAD"
|
||||
end
|
||||
|
||||
def pry?
|
||||
include?("--pry") || !ENV["HOMEBREW_PRY"].nil?
|
||||
end
|
||||
|
||||
# eg. `foo -ns -i --bar` has three switches, n, s and i
|
||||
def switch?(char)
|
||||
return false if char.length > 1
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user