Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

58 changes: 38 additions & 20 deletions src/workato_platform/cli/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,35 @@
from workato_platform.cli.utils.version_checker import check_updates_async


@click.group()
class AliasedGroup(click.Group):
"""A Click Group that supports command aliases without showing them in help"""

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.aliases = {}

def add_command_with_alias(self, cmd, name=None, alias=None):
"""Add a command with an optional hidden alias"""
# Add the main command
self.add_command(cmd, name=name)

# Store alias mapping
if alias:
main_name = name or cmd.name
if alias == main_name:
raise ValueError(
f"Alias '{alias}' cannot be the same as the main command name '{main_name}'."
)
self.aliases[alias] = main_name

def get_command(self, ctx, cmd_name):
# Check if it's an alias first
if cmd_name in self.aliases:
cmd_name = self.aliases[cmd_name]
return super().get_command(ctx, cmd_name)


@click.group(cls=AliasedGroup)
@click.option(
"--profile",
help="Profile to use for authentication and region settings",
Expand Down Expand Up @@ -66,33 +94,23 @@ def cli(

# Core setup and configuration commands
cli.add_command(init.init)
cli.add_command(projects.projects)
cli.add_command(projects.projects, name="project")
cli.add_command_with_alias(projects.projects, alias="project")
cli.add_command(profiles.profiles)
cli.add_command(profiles.profiles, name="profiles")
cli.add_command(properties.properties)
cli.add_command(properties.properties, name="property")
cli.add_command_with_alias(properties.properties, alias="property")

# Development commands
cli.add_command(guide.guide)
cli.add_command(push.push)
cli.add_command(pull.pull)

# API and resource management commands
cli.add_command(api_collections.api_collections)
cli.add_command(api_collections.api_collections, name="api-collection")
cli.add_command(api_clients.api_clients)
cli.add_command(api_clients.api_clients, name="api-client")
cli.add_command(data_tables.data_tables)
cli.add_command(data_tables.data_tables, name="data-table")
cli.add_command(connections.connections)
cli.add_command(connections.connections, name="connection")
cli.add_command(connectors.connectors)
cli.add_command(connectors.connectors, name="connector")
cli.add_command(recipes.recipes)
cli.add_command(recipes.recipes, name="recipe")
cli.add_command_with_alias(api_collections.api_collections, alias="api-collection")
cli.add_command_with_alias(api_clients.api_clients, alias="api-client")
cli.add_command_with_alias(data_tables.data_tables, alias="data-table")
cli.add_command_with_alias(connections.connections, alias="connection")
cli.add_command_with_alias(connectors.connectors, alias="connector")
cli.add_command_with_alias(recipes.recipes, alias="recipe")

# Information commands
cli.add_command(assets.assets)
cli.add_command(assets.assets, name="asset")
cli.add_command_with_alias(assets.assets, alias="asset")
cli.add_command(workspace.workspace)
Loading