samcli/cli/options.py (43 lines of code) (raw):
"""
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)