Source code for udaan.cli
"""Udaan command-line interface."""
import typer
_ctx = {"help_option_names": ["-h", "--help"]}
app = typer.Typer(
name="udaan",
help="Simulation and geometric control of aerial manipulation systems.",
no_args_is_help=True,
context_settings=_ctx,
)
# --- Subcommand groups ---
from .generate import generate_app # noqa: E402
from .run import run_app # noqa: E402
app.add_typer(run_app, name="run")
app.add_typer(generate_app, name="generate-xml")
# --- Top-level commands ---
[docs]
@app.command("version")
def version():
"""Show udaan version."""
from udaan import __version__
typer.echo(f"udaan {__version__}")
[docs]
def parse_vec(s: str | None, default):
"""Parse 'x,y,z' string to numpy array, or return default."""
import numpy as np
if s is None:
return default
try:
return np.array([float(x) for x in s.split(",")])
except ValueError:
typer.echo(f"Invalid position format: '{s}'. Expected 'x,y,z'.", err=True)
raise typer.Exit(1) from None