""" This file contains common CLI options common to all commands. As we add more commands, this will become a repository of options that other commands could use when needed. """ import click from .context import Context def debug_option(f): """ Configures --debug option for CLI :param f: Callback Function to be passed to Click """ def callback(ctx, param, value): state = ctx.ensure_object(Context) state.debug = value return value return click.option( "--debug", expose_value=False, is_eager=True, is_flag=True, envvar="SAM_DEBUG", help="Turn on debug logging to print debug message generated by AWS SAM CLI and display timestamps.", callback=callback, )(f) def region_option(f): """ Configures --region option for CLI :param f: Callback Function to be passed to Click """ def callback(ctx, param, value): state = ctx.ensure_object(Context) from botocore import exceptions, utils from samcli.commands.exceptions import RegionError try: utils.validate_region_name(value) except exceptions.InvalidRegionError as ex: raise RegionError( message=f"Provided region: {value} doesn't match a supported format", wrapped_from=ex.__class__.__name__ ) from ex state.region = value return value return click.option( "--region", expose_value=False, help="Set the AWS Region of the service. (e.g. us-east-1)", callback=callback )(f) def profile_option(f): """ Configures --profile option for CLI :param f: Callback Function to be passed to Click """ def callback(ctx, param, value): state = ctx.ensure_object(Context) state.profile = value return value return click.option( "--profile", expose_value=False, help="Select a specific profile from your credential file to get AWS credentials.", callback=callback, )(f)