From 16b160d673c8742cb03fcdeb01276cb3cbb2e36f Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Sat, 26 Apr 2025 14:18:07 +0100 Subject: [PATCH] add profile typer --- obsws_cli/profile.py | 78 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 obsws_cli/profile.py diff --git a/obsws_cli/profile.py b/obsws_cli/profile.py new file mode 100644 index 0000000..b3f9ea4 --- /dev/null +++ b/obsws_cli/profile.py @@ -0,0 +1,78 @@ +"""module containing commands for manipulating profiles in OBS.""" + +import typer + +from . import validate +from .alias import AliasGroup + +app = typer.Typer(cls=AliasGroup) + + +@app.callback() +def main(): + """Control profiles in OBS.""" + + +@app.command('list | ls') +def list(ctx: typer.Context): + """List profiles.""" + resp = ctx.obj.get_profile_list() + for profile in resp.profiles: + typer.echo(profile) + + +@app.command() +def current(ctx: typer.Context): + """Get the current profile.""" + resp = ctx.obj.get_profile_list() + typer.echo(resp.current_profile_name) + + +@app.command() +def switch(ctx: typer.Context, profile_name: str): + """Switch to a profile.""" + if not validate.profile_exists(ctx, profile_name): + typer.echo( + f"Profile '{profile_name}' not found.", + err=True, + ) + raise typer.Exit(code=1) + + resp = ctx.obj.get_profile_list() + if resp.current_profile_name == profile_name: + typer.echo( + f"Profile '{profile_name}' is already the current profile.", + err=True, + ) + raise typer.Exit(code=1) + + ctx.obj.set_current_profile(profile_name) + typer.echo(f"Switched to profile '{profile_name}'.") + + +@app.command() +def create(ctx: typer.Context, profile_name: str): + """Create a new profile.""" + if validate.profile_exists(ctx, profile_name): + typer.echo( + f"Profile '{profile_name}' already exists.", + err=True, + ) + raise typer.Exit(code=1) + + ctx.obj.create_profile(profile_name) + typer.echo(f"Created profile '{profile_name}'.") + + +@app.command() +def remove(ctx: typer.Context, profile_name: str): + """Remove a profile.""" + if not validate.profile_exists(ctx, profile_name): + typer.echo( + f"Profile '{profile_name}' not found.", + err=True, + ) + raise typer.Exit(code=1) + + ctx.obj.remove_profile(profile_name) + typer.echo(f"Removed profile '{profile_name}'.")