From 7e5c6e6b12fbd3ff37e2ddb7b584fe9b30d3f390 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 13 Feb 2022 12:46:26 -0500 Subject: [PATCH] Store task parameter values in a Hash --- lib/rscons/application.rb | 2 +- lib/rscons/task.rb | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/lib/rscons/application.rb b/lib/rscons/application.rb index 905b7a0..ced8ecd 100644 --- a/lib/rscons/application.rb +++ b/lib/rscons/application.rb @@ -216,7 +216,7 @@ module Rscons tasks_and_params.each do |task_name, task_params| task_params.each do |param_name, param_value| if param = Task[task_name].params[param_name] - param.value = param_value + Task[task_name].set_param_value(param_name, param_value) else raise RsconsError.new("Unknown parameter #{param_name.inspect} for task #{task_name}") end diff --git a/lib/rscons/task.rb b/lib/rscons/task.rb index a119340..105140b 100644 --- a/lib/rscons/task.rb +++ b/lib/rscons/task.rb @@ -107,6 +107,10 @@ module Rscons # Task params. attr_reader :params + # @return [Hash String>] + # Task parameter values. + attr_reader :param_values + # Construct a task. # # @param name [String] @@ -122,6 +126,7 @@ module Rscons @description = nil @name = name @params = {} + @param_values = {} @actions = [] Task.register(self) modify(options, &block) @@ -199,6 +204,7 @@ module Rscons if options.include?(:params) Array(options[:params]).each do |param| @params[param.name] = param + set_param_value(param.name, param.value) end end if block @@ -213,16 +219,19 @@ module Rscons end end - # Get parameter values as a Hash. + # Set parameter value. # - # @return [Hash] - # Parameter values. - def param_values - param_values = {} - @params.each do |name, param| - param_values[name] = param.value + # @param param_name [String] + # Parameter name. + # @param param_value [String, Boolean] + # Parameter value. + # + # @return [void] + def set_param_value(param_name, param_value) + if param = @params[param_name] + param.value = param_value end - param_values + @param_values[param_name] = param_value end end