in src/aws_encryption_sdk_cli/__init__.py [0:0]
def cli(raw_args=None):
# type: (List[str]) -> Union[str, None]
"""CLI entry point. Processes arguments, sets up the key provider, and processes requested action.
:returns: Execution return value intended for ``sys.exit()``
"""
try:
args = parse_args(raw_args)
setup_logger(args.verbosity, args.quiet) # pylint: disable=no-member
_LOGGER.debug("Encryption mode: %s", args.action) # pylint: disable=no-member
_LOGGER.debug("Encryption source: %s", args.input) # pylint: disable=no-member
_LOGGER.debug("Encryption destination: %s", args.output) # pylint: disable=no-member
_LOGGER.debug("Wrapping key provider configuration: %s", args.wrapping_keys) # pylint: disable=no-member
_LOGGER.debug("Suffix requested: %s", args.suffix) # pylint: disable=no-member
_warn_deprecated_python()
crypto_materials_manager = build_crypto_materials_manager_from_args(
key_providers_config=args.wrapping_keys, caching_config=args.caching
)
stream_args = stream_kwargs_from_args(args, crypto_materials_manager)
process_cli_request(stream_args, args)
return None
except AWSEncryptionSDKCLIError as error:
return error.args[0]
except Exception as error: # pylint: disable=broad-except
message = os.linesep.join(
[
"Encountered unexpected error: increase verbosity to see details.",
"{cls}({args})".format(
cls=error.__class__.__name__, args=", ".join(['"{}"'.format(arg) for arg in error.args])
),
]
)
_LOGGER.debug(message)
# copy.deepcopy can't handle raw exc_info objects, so format it first
formatted_traceback = traceback.format_exc()
_LOGGER.debug(formatted_traceback)
return message