@@ -130,10 +130,14 @@ self.opt.${cmd_ident(method)} {
130130 mc = new_method_context(resource, method, c)
131131 supports_media_download = mc.m.get(' supportsMediaDownload' , False )
132132 handle_output = mc.response_schema or supports_media_download
133- track_download_flag = supports_media_download and parameters is not UNDEFINED and ' alt' in parameters
134-
135133 optional_props = [p for p in mc.optional_props if not p.get(' skip_example' , False )]
136134 optional_prop_names = set (p.name for p in optional_props)
135+
136+ global_parameter_names = set ()
137+ track_download_flag = (supports_media_download and
138+ (parameters is not UNDEFINED and ' alt' in parameters) or (' alt' in optional_prop_names))
139+ if parameters is not UNDEFINED :
140+ global_parameter_names = list (pn for pn in sorted (parameters.keys()) if pn not in optional_prop_names)
137141 handle_props = optional_props or parameters is not UNDEFINED
138142%> \
139143 ## REQUIRED PARAMETERS
@@ -176,20 +180,28 @@ for parg in ${SOPT + arg_ident(VALUE_ARG)}.iter() {
176180 ptype = ' int64'
177181 value_unwrap = ' value.unwrap_or("%s ")' % JSON_TYPE_RND_MAP [ptype]()
178182%> \
179- "${ ident(p.name)} " => call = call.${ mangle_ident(setter_fn_name(p))} (\
183+ "${ mangle_subcommand(p.name)} " => {
184+ % if p.name == ' alt' :
185+ if ${ value_unwrap} == "media" {
186+ download_mode = true;
187+ }
188+ % endif
189+ call = call.${ mangle_ident(setter_fn_name(p))} (\
180190 % if ptype != ' string' :
181- arg_from_str(${ value_unwrap} , err, "${ ident (p.name)} ", "${ p.type} ")),
191+ arg_from_str(${ value_unwrap} , err, "${ mangle_subcommand (p.name)} ", "${ p.type} ")\
182192 % else :
183- ${ value_unwrap} ),
193+ ${ value_unwrap} \
184194 % endif # handle conversion
195+ );
196+ },
185197% endfor # each property
186198 % if parameters is not UNDEFINED :
187- % for pn, p in list ((pn, p) for (pn, p) in parameters.iteritems() if pn not in optional_prop_names) :
199+ % for pn in global_parameter_names :
188200 \
189201 % if not loop.first:
190202|\
191203 % endif
192- "${ ident (pn)} "\
204+ "${ mangle_subcommand (pn)} "\
193205 % if not loop.last:
194206
195207 % endif
@@ -198,12 +210,17 @@ ${value_unwrap}),
198210<%
199211 value_unwrap = ' value.unwrap_or("unset")'
200212%> \
201- % if track_download_flag:
213+ % if track_download_flag and ' alt ' in global_parameter_names :
202214 if key == "alt" && ${ value_unwrap} == "media" {
203215 download_mode = true;
204216 }
205217 % endif
206- call = call.${ ADD_PARAM_FN } (key, ${ value_unwrap} )
218+ let map = [
219+ % for pn in list (pn for pn in global_parameter_names if mangle_subcommand(pn) != pn):
220+ ("${ mangle_subcommand(pn)} ", "${ pn} "),
221+ % endfor # each global parameter
222+ ];
223+ call = call.${ ADD_PARAM_FN } (map.iter().find(|t| t.0 == key).unwrap_or(& ("", key)).1, ${ value_unwrap} )
207224 },
208225 % endif # handle global parameters
209226 _ => err.issues.push(CLIError::UnknownParameter(key.to_string())),
0 commit comments