summaryrefslogtreecommitdiff
path: root/lib/chef/property.rb
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2020-04-17 12:51:13 -0700
committerLamont Granquist <lamont@scriptkiddie.org>2020-04-17 16:23:51 -0700
commit49aa17ad9805b6949baaa37cfe66f8cf2b8083a8 (patch)
tree0c1d22d58c8c679c048aac2b400a1b5703c0a70a /lib/chef/property.rb
parent8feb3f054185d01d70e42e917429c692dfd8dc81 (diff)
downloadchef-49aa17ad9805b6949baaa37cfe66f8cf2b8083a8.tar.gz
Force requiring properties
All required properties are now required for all actions by default even if the action does not reference the property. In order to only make the property required for a subset of the actions, specify them as an array of symbols to the required options on the property. ``` property :whatever, String, required: %i{start stop} action :start do end action :stop do end action :enable do end action :disable do end ``` That property will be required for start+stop but not for enable+disable. There's an unaddressed edge case here where if you reference the property in an action which was not specified that it will also fail validation. That is correct behavior. We should probably dig into how to warn the user that they must either remove the reference to the property from that action or else to add the action to the list of required actions on the property. Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
Diffstat (limited to 'lib/chef/property.rb')
-rw-r--r--lib/chef/property.rb8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/chef/property.rb b/lib/chef/property.rb
index eaf1a66e86..d65545c138 100644
--- a/lib/chef/property.rb
+++ b/lib/chef/property.rb
@@ -303,8 +303,12 @@ class Chef
#
# @return [Boolean]
#
- def required?
- options[:required]
+ def required?(action = nil)
+ if !action.nil? && options[:required].is_a?(Array)
+ options[:required].include?(action)
+ else
+ !!options[:required]
+ end
end
#