o .&ßa+ã@sTddlZddlmZmZddlmZddlmZdd„Zdd„Z Gd d „d eƒZ dS) éN)Ú get_paramfileÚLOCAL_PREFIX_MAP)Ú ParamError)ÚOverrideRequiredArgsArgumentcCs| dt¡dS)Nzbuilding-argument-table)ÚregisterÚadd_cli_input_json)Úcli©r úD/usr/lib/python3/dist-packages/awscli/customizations/cliinputjson.pyÚregister_cli_input_jsonsr cKs"d|vrt|ƒ}| |¡dSdS)NÚoutfile)ÚCliInputJSONArgumentÚadd_to_arg_table)ÚsessionÚargument_tableÚkwargsÚcli_input_json_argumentr r r rsþrcsFeZdZdZdddœZ‡fdd„Z‡fdd„Zd d „Zd d „Z‡Z S) r a#This argument inputs a JSON string as the entire input for a command. Ideally, the value to this argument should be a filled out JSON file generated by ``--generate-cli-skeleton``. The items in the JSON string will not clobber other arguments entered into the command line. zcli-input-jsonakPerforms service operation based on the JSON string provided. The JSON string follows the format provided by ``--generate-cli-skeleton``. If other arguments are provided on the command line, the CLI values will override the JSON-provided values. It is not possible to pass arbitrary binary values using a JSON-provided value as the string will be taken literally.)ÚnameÚ help_textcstt|ƒ |¡dS©N)Úsuperr Ú__init__)Úselfr©Ú __class__r r r2szCliInputJSONArgument.__init__cs"|j d|j¡tt|ƒ ¡dS)Nzcalling-command.*)Ú_sessionrÚadd_to_call_parametersrr Ú_register_argument_action)rrr r r5sÿz.CliInputJSONArgument._register_argument_actionc Kszt|ddƒ}|dur;t|tƒ}|dur|}zt |¡}Wnty2}z t|jd||fƒ‚d}~ww| ||¡dSdS)NÚcli_input_jsonz"Invalid JSON: %s JSON received: %s) ÚgetattrrrÚjsonÚloadsÚ ValueErrorrrÚ_update_call_parameters) rÚcall_parametersÚ parsed_argsÚparsed_globalsrÚ input_jsonÚretrieved_jsonÚ input_dataÚer r r r:s"  ÿÿ€ÿñz+CliInputJSONArgument.add_to_call_parameterscCs&| ¡D] }||vr||||<qdSr)Úkeys)rr$r)Ú input_keyr r r r#Ps  €üz,CliInputJSONArgument._update_call_parameters) Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚARG_DATArrrr#Ú __classcell__r r rr r sþ r ) r Úawscli.paramfilerrÚawscli.argprocessrÚawscli.customizations.argumentsrr rr r r r r Ús