import typer from typing import Optional from rich.console import Console from rich.table import Table from rich.prompt import Prompt import secnex.utils as utils from secnex.kit.auth.auth import Auth from secnex.kit.config.config import Config from secnex.kit.clients.application import ApplicationClient console = Console() application_app = typer.Typer() @application_app.command(name="create", help="Create a new application") def create( name: Optional[str] = typer.Option(None, "--name", "-n", help="The name of the application"), tenant: Optional[str] = typer.Option(None, "--tenant", "-t", help="The tenant to set for the application"), ): """Create a new application""" if name is None: name = Prompt.ask("Enter the name of the application") if tenant is None: tenant = Prompt.ask("Enter the ID of the tenant") config = Config("default") application_client = ApplicationClient(config) secret = utils.generate_secret() app_id, status_code, success = application_client.create(name, tenant, secret) if not success: console.print(f"Failed to create application! Please check the logs for more information.", style="bold red") return console.print(f"Application created successfully!", style="bold green") console.print(f"Application ID: {app_id}", style="bold green") console.print(f"Secret: {secret}", style="bold green") @application_app.command(name="ls", help="List all applications") def ls(): """List all applications""" config = Config("default") application_client = ApplicationClient(config) applications, status_code, success = application_client.get_all() if applications is None: console.print(f"No applications found!", style="bold red") return count_applications = len(applications) console.print(f"Found {count_applications} applications") table = Table(title="Applications") table.add_column("ID", style="bold green") table.add_column("Name", style="bold yellow") table.add_column("Tenant ID", style="bold purple") for app in applications: table.add_row(app.id, app.name, app.tenant_id) console.print(table) @application_app.command(name="rm", help="Remove an application") def rm(id: str): """Remove an application""" config = Config("default") application_client = ApplicationClient(config) application_client.remove(id) console.print(f"Application {id} removed successfully!")