@@ -31,12 +31,26 @@ def assert_catch_all(key, value)
3131 end
3232
3333 def assert_catch_all_hash ( key , value )
34- assert_hash key , value , Script ::CatchAll . option_keys
34+ assert_hash key , value , keys : Script ::CatchAll . option_keys
3535 assert_string "#{ key } .label" , value [ 'label' ]
3636 assert_optional_string "#{ key } .help" , value [ 'help' ]
3737 assert_boolean "#{ key } .required" , value [ 'required' ]
3838 end
3939
40+ def assert_dependencies ( key , value )
41+ return unless value
42+
43+ case value
44+ when Array
45+ assert_array key , value , of : :string
46+ when Hash
47+ assert_hash key , value , of : :string
48+ else
49+ assert [ Array , Hash ] . include? ( value . class ) ,
50+ "#{ key } must be an array or a hash"
51+ end
52+ end
53+
4054 def assert_extensible ( key , value )
4155 return unless value
4256
@@ -51,7 +65,7 @@ def assert_expose(key, value)
5165 end
5266
5367 def assert_arg ( key , value )
54- assert_hash key , value , Script ::Argument . option_keys
68+ assert_hash key , value , keys : Script ::Argument . option_keys
5569 assert_string "#{ key } .name" , value [ 'name' ]
5670 assert_optional_string "#{ key } .help" , value [ 'help' ]
5771 assert_optional_string "#{ key } .default" , value [ 'default' ]
@@ -67,7 +81,7 @@ def assert_arg(key, value)
6781 end
6882
6983 def assert_flag ( key , value )
70- assert_hash key , value , Script ::Flag . option_keys
84+ assert_hash key , value , keys : Script ::Flag . option_keys
7185 assert value [ 'short' ] || value [ 'long' ] , "#{ key } must have at least one of long or short name"
7286
7387 refute value [ 'allowed' ] && value [ 'completions' ] , "#{ key } cannot have both allowed and completions"
@@ -105,15 +119,15 @@ def assert_flag(key, value)
105119 end
106120
107121 def assert_env_var ( key , value )
108- assert_hash key , value , Script ::EnvironmentVariable . option_keys
122+ assert_hash key , value , keys : Script ::EnvironmentVariable . option_keys
109123 assert_string "#{ key } .name" , value [ 'name' ]
110124 assert_optional_string "#{ key } .help" , value [ 'help' ]
111125 assert_optional_string "#{ key } .default" , value [ 'default' ]
112126 assert_boolean "#{ key } .required" , value [ 'required' ]
113127 end
114128
115129 def assert_command ( key , value )
116- assert_hash key , value , Script ::Command . option_keys
130+ assert_hash key , value , keys : Script ::Command . option_keys
117131
118132 refute value [ 'commands' ] && value [ 'args' ] , "#{ key } cannot have both commands and args"
119133 refute value [ 'commands' ] && value [ 'catch_all' ] , "#{ key } cannot have both commands and catch_all"
@@ -133,12 +147,12 @@ def assert_command(key, value)
133147 assert_string_or_array "#{ key } .alias" , value [ 'alias' ]
134148 assert_string_or_array "#{ key } .examples" , value [ 'examples' ]
135149 assert_extensible "#{ key } .extensible" , value [ 'extensible' ]
150+ assert_dependencies "#{ key } .dependencies" , value [ 'dependencies' ]
136151
137152 assert_array "#{ key } .args" , value [ 'args' ] , of : :arg
138153 assert_array "#{ key } .flags" , value [ 'flags' ] , of : :flag
139154 assert_array "#{ key } .commands" , value [ 'commands' ] , of : :command
140155 assert_array "#{ key } .completions" , value [ 'completions' ] , of : :string
141- assert_array "#{ key } .dependencies" , value [ 'dependencies' ] , of : :string
142156 assert_array "#{ key } .filters" , value [ 'filters' ] , of : :string
143157 assert_array "#{ key } .environment_variables" , value [ 'environment_variables' ] , of : :env_var
144158
0 commit comments