Files
Dorod-Sky/skyvern/cli/status.py
2025-05-22 03:12:32 -04:00

49 lines
1.3 KiB
Python

import os
import socket
import typer
from rich.table import Table
from .console import console
status_app = typer.Typer(help="Check status of Skyvern components.", invoke_without_command=True)
def _check_port(port: int) -> bool:
"""Return True if a local port is accepting connections."""
try:
with socket.create_connection(("localhost", port), timeout=0.5):
return True
except OSError:
return False
def _status_table() -> Table:
api_port = int(os.getenv("PORT", 8000))
ui_port = 8080
db_port = 5432
components = [
("API server", _check_port(api_port), "skyvern run server"),
("UI server", _check_port(ui_port), "skyvern run ui"),
("PostgreSQL", _check_port(db_port), "skyvern init --no-postgres false"),
]
table = Table(title="Skyvern Component Status")
table.add_column("Component", style="bold")
table.add_column("Running")
table.add_column("Start Command")
for name, running, cmd in components:
status = "[green]Yes[/green]" if running else "[red]No[/red]"
table.add_row(name, status, cmd)
return table
@status_app.callback(invoke_without_command=True)
def status_callback(ctx: typer.Context) -> None:
"""Show status for API server, UI, and database."""
if ctx.invoked_subcommand is None:
console.print(_status_table())