From 642994eaaedd5f2726a38a2a3416ae7c6f0725aa Mon Sep 17 00:00:00 2001 From: Prakash Maheshwaran <73785492+Prakashmaheshwaran@users.noreply.github.com> Date: Thu, 5 Jun 2025 04:22:03 -0400 Subject: [PATCH] added new CLi to stof skyvern sever (#2549) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> --- skyvern/cli/__init__.py | 2 ++ skyvern/cli/commands.py | 2 ++ skyvern/cli/stop_commands.py | 31 +++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 skyvern/cli/stop_commands.py diff --git a/skyvern/cli/__init__.py b/skyvern/cli/__init__.py index ed1db13c..153ec861 100644 --- a/skyvern/cli/__init__.py +++ b/skyvern/cli/__init__.py @@ -8,6 +8,7 @@ __all__ = [ "tasks_app", "docs_app", "status_app", + "stop_app", "init_app", ] @@ -16,5 +17,6 @@ from .docs import docs_app from .quickstart import quickstart_app from .run_commands import run_app from .status import status_app +from .stop_commands import stop_app from .tasks import tasks_app from .workflow import workflow_app diff --git a/skyvern/cli/commands.py b/skyvern/cli/commands.py index 019ac926..7dffdc0a 100644 --- a/skyvern/cli/commands.py +++ b/skyvern/cli/commands.py @@ -6,6 +6,7 @@ from .init_command import init, init_browser from .quickstart import quickstart_app from .run_commands import run_app from .status import status_app +from .stop_commands import stop_app from .tasks import tasks_app from .workflow import workflow_app @@ -23,6 +24,7 @@ cli_app.add_typer(workflow_app, name="workflow", help="Workflow management comma cli_app.add_typer(tasks_app, name="tasks", help="Task management commands.") cli_app.add_typer(docs_app, name="docs", help="Open Skyvern documentation.") cli_app.add_typer(status_app, name="status", help="Check if Skyvern services are running.") +cli_app.add_typer(stop_app, name="stop", help="Stop Skyvern services like the API server.") init_app = typer.Typer( invoke_without_command=True, help="Interactively configure Skyvern and its dependencies.", diff --git a/skyvern/cli/stop_commands.py b/skyvern/cli/stop_commands.py new file mode 100644 index 00000000..ac8be7b8 --- /dev/null +++ b/skyvern/cli/stop_commands.py @@ -0,0 +1,31 @@ +import typer +from rich.panel import Panel +from rich.prompt import Confirm + +from skyvern.config import settings + +from .console import console +from .run_commands import get_pids_on_port, kill_pids + +stop_app = typer.Typer(help="Stop Skyvern services like the API server.") + + +@stop_app.command(name="server") +def stop_server( + force: bool = typer.Option(False, "--force", "-f", help="Force kill without confirmation"), +) -> None: + """Stop the Skyvern API server running on the configured port.""" + port = settings.PORT + console.print(f"[bold green]Checking for process on port {port}...[/bold green]") + pids = get_pids_on_port(port) + if not pids: + console.print(f"[yellow]No process found running on port {port}.[/yellow]") + return + if not force: + prompt = f"Process{'es' if len(pids) > 1 else ''} running on port {port}. Kill them?" + confirm = Confirm.ask(prompt) + if not confirm: + console.print("[yellow]Server not stopped.[/yellow]") + return + kill_pids(pids) + console.print(Panel(f"Stopped server on port {port}", border_style="red"))