Add Task#[]
This commit is contained in:
parent
f2a56f1c61
commit
ac0f6087fc
@ -18,3 +18,11 @@ task "four", desc: "Task four", params: [
|
||||
puts "myparam:" + params["myparam"].inspect
|
||||
puts "myp2:" + params["myp2"].inspect
|
||||
end
|
||||
|
||||
task "five" do
|
||||
puts "four myparam value is #{Task["four"]["myparam"]}"
|
||||
end
|
||||
|
||||
task "six" do |task|
|
||||
puts task["nope"]
|
||||
end
|
||||
|
@ -131,6 +131,21 @@ module Rscons
|
||||
modify(options, &block)
|
||||
end
|
||||
|
||||
# Get a parameter's value.
|
||||
#
|
||||
# @param param_name [String]
|
||||
# Parameter name.
|
||||
#
|
||||
# @return [String]
|
||||
# Parameter value.
|
||||
def [](param_name)
|
||||
param = @params[param_name]
|
||||
unless param
|
||||
raise RsconsError.new("Could not find parameter '#{param_name}'")
|
||||
end
|
||||
param.value
|
||||
end
|
||||
|
||||
# Execute a task's actions.
|
||||
#
|
||||
# @return [void]
|
||||
|
@ -2885,6 +2885,27 @@ EOF
|
||||
expect(result.stdout).to eq %[four\nmyparam:"cli-value"\nmyp2:"--myp2"\none\n]
|
||||
end
|
||||
|
||||
it "allows accessing task arguments via Task#[]" do
|
||||
test_dir "tasks"
|
||||
result = run_rscons(args: %w[-f tasks.rb configure])
|
||||
result = run_rscons(args: %w[-f tasks.rb five])
|
||||
expect(result.stderr).to eq ""
|
||||
expect(result.status).to eq 0
|
||||
expect(result.stdout).to match /four myparam value is defaultvalue/
|
||||
result = run_rscons(args: %w[-f tasks.rb four --myparam=v42 five])
|
||||
expect(result.stderr).to eq ""
|
||||
expect(result.status).to eq 0
|
||||
expect(result.stdout).to match /four myparam value is v42/
|
||||
end
|
||||
|
||||
it "exits with an error when attempting to get a nonexistent parameter value" do
|
||||
test_dir "tasks"
|
||||
result = run_rscons(args: %w[-f tasks.rb configure])
|
||||
result = run_rscons(args: %w[-f tasks.rb six])
|
||||
expect(result.stderr).to match /Could not find parameter 'nope'/
|
||||
expect(result.status).to_not eq 0
|
||||
end
|
||||
|
||||
it "displays tasks and their arguments in the help info" do
|
||||
test_dir "tasks"
|
||||
result = run_rscons(args: %w[-f tasks.rb -h])
|
||||
|
Loading…
x
Reference in New Issue
Block a user