samcli/commands/sync/core/command.py (78 lines of code) (raw):
"""
Sync Command Class.
"""
from click import Context, style
from samcli.cli.core.command import CoreCommand
from samcli.cli.row_modifiers import RowDefinition, ShowcaseRowModifier
from samcli.commands.sync.core.formatters import SyncCommandHelpTextFormatter
from samcli.commands.sync.core.options import OPTIONS_INFO
class SyncCommand(CoreCommand):
class CustomFormatterContext(Context):
formatter_class = SyncCommandHelpTextFormatter
context_class = CustomFormatterContext
@staticmethod
def format_examples(ctx: Context, formatter: SyncCommandHelpTextFormatter):
with formatter.indented_section(name="Examples", extra_indents=1):
formatter.write_rd(
[
RowDefinition(
text="\n",
),
RowDefinition(
name=style(f"${ctx.command_path} " f"--watch --stack-name {{stack}}"),
extra_row_modifiers=[ShowcaseRowModifier()],
),
RowDefinition(
name=style(f"${ctx.command_path} " f"--code --watch --stack-name {{stack}}"),
extra_row_modifiers=[ShowcaseRowModifier()],
),
RowDefinition(
name=style(
f"${ctx.command_path} "
f"--code --stack-name {{stack}} --resource-id {{ChildStack}}/{{ResourceId}}"
),
extra_row_modifiers=[ShowcaseRowModifier()],
),
],
)
@staticmethod
def format_acronyms(formatter: SyncCommandHelpTextFormatter):
with formatter.indented_section(name="Acronyms", extra_indents=1):
formatter.write_rd(
[
RowDefinition(
name="IAM",
text="Identity and Access Management",
extra_row_modifiers=[ShowcaseRowModifier()],
),
RowDefinition(
name="ARN",
text="Amazon Resource Name",
extra_row_modifiers=[ShowcaseRowModifier()],
),
RowDefinition(
name="S3",
text="Simple Storage Service",
extra_row_modifiers=[ShowcaseRowModifier()],
),
RowDefinition(
name="SNS",
text="Simple Notification Service",
extra_row_modifiers=[ShowcaseRowModifier()],
),
RowDefinition(
name="ECR",
text="Elastic Container Registry",
extra_row_modifiers=[ShowcaseRowModifier()],
),
RowDefinition(
name="KMS",
text="Key Management Service",
extra_row_modifiers=[ShowcaseRowModifier()],
),
]
)
def format_options(self, ctx: Context, formatter: SyncCommandHelpTextFormatter) -> None: # type:ignore
# NOTE(sriram-mv): `ignore` is put in place here for mypy even though it is the correct behavior,
# as the `formatter_class` can be set in subclass of Command. If ignore is not set,
# mypy raises argument needs to be HelpFormatter as super class defines it.
self.format_description(formatter)
SyncCommand.format_examples(ctx, formatter)
SyncCommand.format_acronyms(formatter)
CoreCommand._format_options(
ctx=ctx, params=self.get_params(ctx), formatter=formatter, formatting_options=OPTIONS_INFO
)