in src/aws_encryption_sdk_cli/internal/arg_parsing.py [0:0]
def parse_args(raw_args=None):
# type: (Optional[List[str]]) -> argparse.Namespace
"""Handles argparse to collect the needed input values.
:param list raw_args: List of arguments
:returns: parsed arguments
:rtype: argparse.Namespace
"""
parser = _build_parser()
parsed_args = parser.parse_args(args=raw_args)
try:
if parsed_args.dummy_redirect is not None:
raise ParameterParseError(
'Found invalid argument "{actual}". Did you mean "-{actual}"?'.format(actual=parsed_args.dummy_redirect)
)
# We add the 'required_encryption_context_keys' to arg parse, even though it is not
# meant to be used by customers, so that we can pass the parsed arguments around internally
if parsed_args.required_encryption_context_keys is not None:
raise ParameterParseError("--required-encryption-context-keys cannot be manually provided")
if parsed_args.overwrite_metadata:
parsed_args.metadata_output.force_overwrite()
parsed_args.wrapping_keys = _process_wrapping_key_provider_configs(
parsed_args.wrapping_keys, parsed_args.action
)
# mypy does not appear to understand nargs="+" behavior
parsed_args.encryption_context, parsed_args.required_encryption_context_keys = _process_encryption_context(
action=parsed_args.action,
raw_encryption_context=parsed_args.encryption_context,
raw_required_encryption_context_keys=parsed_args.required_encryption_context_keys, # type: ignore
)
if parsed_args.caching is not None:
parsed_args.caching = _process_caching_config(parsed_args.caching)
except ParameterParseError as error:
parser.error(*error.args)
return parsed_args