@@ -84,6 +84,8 @@ def assert_arg(key, value)
8484 assert_array "#{ key } .allowed" , value [ 'allowed' ] , of : :string
8585
8686 refute value [ 'name' ] . match ( /^-/ ) , "#{ key } .name must not start with '-'"
87+
88+ refute value [ 'required' ] && value [ 'default' ] , "#{ key } cannot have both required and default"
8789 end
8890
8991 def assert_flag ( key , value )
@@ -104,6 +106,16 @@ def assert_flag(key, value)
104106 assert value [ 'long' ] . match ( /^--[a-zA-Z0-9_\- ]+$/ ) , "#{ key } .long must be in the form of '--name'" if value [ 'long' ]
105107 assert value [ 'short' ] . match ( /^-[a-zA-Z0-9]$/ ) , "#{ key } .short must be in the form of '-n'" if value [ 'short' ]
106108 refute value [ 'arg' ] . match ( /^-/ ) , "#{ key } .arg must not start with '-'" if value [ 'arg' ]
109+
110+ refute value [ 'required' ] && value [ 'default' ] , "#{ key } cannot have both required and default"
111+
112+ if value [ 'default' ]
113+ assert value [ 'arg' ] , "#{ key } .default does not make sense without arg"
114+ end
115+
116+ if value [ 'allowed' ]
117+ assert value [ 'arg' ] , "#{ key } .allowed does not make sense without arg"
118+ end
107119 end
108120
109121 def assert_env_var ( key , value )
@@ -140,6 +152,16 @@ def assert_command(key, value)
140152 assert_array "#{ key } .filters" , value [ 'filters' ] , of : :string
141153 assert_array "#{ key } .environment_variables" , value [ 'environment_variables' ] , of : :env_var
142154 assert_array "#{ key } .examples" , value [ 'examples' ] , of : :string
155+
156+ if key == "root"
157+ refute value [ 'short' ] , "#{ key } .short makes no sense"
158+ refute value [ 'group' ] , "#{ key } .group makes no sense"
159+ refute value [ 'default' ] , "#{ key } .default makes no sense"
160+ refute value [ 'private' ] , "#{ key } .private makes no sense"
161+ else
162+ refute value [ 'version' ] , "#{ key } .version makes no sense"
163+ refute value [ 'extensible' ] , "#{ key } .extensible makes no sense"
164+ end
143165 end
144166 end
145167end
0 commit comments