Coverage for src/workstack/cli/cli.py: 98%
51 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-19 09:31 -0400
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-19 09:31 -0400
1import click
3from workstack.cli.commands.completion import completion_group
4from workstack.cli.commands.config import config_group
5from workstack.cli.commands.create import create
6from workstack.cli.commands.down import down_cmd
7from workstack.cli.commands.gc import gc_cmd
8from workstack.cli.commands.gt import graphite_group
9from workstack.cli.commands.init import init_cmd
10from workstack.cli.commands.jump import jump_cmd
11from workstack.cli.commands.list import list_cmd, ls_cmd
12from workstack.cli.commands.move import move_cmd
13from workstack.cli.commands.prepare_cwd_recovery import prepare_cwd_recovery_cmd
14from workstack.cli.commands.remove import remove_cmd, rm_cmd
15from workstack.cli.commands.rename import rename_cmd
16from workstack.cli.commands.shell_integration import hidden_shell_cmd
17from workstack.cli.commands.status import status_cmd
18from workstack.cli.commands.switch import switch_cmd
19from workstack.cli.commands.sync import sync_cmd
20from workstack.cli.commands.tree import tree_cmd
21from workstack.cli.commands.up import up_cmd
22from workstack.core.context import create_context
24CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"]) # terse help flags
27@click.group(context_settings=CONTEXT_SETTINGS)
28@click.version_option(package_name="workstack")
29@click.pass_context
30def cli(ctx: click.Context) -> None:
31 """Manage git worktrees in a global worktrees directory."""
32 # Only create context if not already provided (e.g., by tests)
33 if ctx.obj is None:
34 ctx.obj = create_context(dry_run=False)
37# Register all commands
38cli.add_command(completion_group)
39cli.add_command(create)
40cli.add_command(down_cmd)
41cli.add_command(jump_cmd)
42cli.add_command(switch_cmd)
43cli.add_command(up_cmd)
44cli.add_command(list_cmd)
45cli.add_command(ls_cmd)
46cli.add_command(status_cmd)
47cli.add_command(init_cmd)
48cli.add_command(move_cmd)
49cli.add_command(remove_cmd)
50cli.add_command(rm_cmd)
51cli.add_command(rename_cmd)
52cli.add_command(config_group)
53cli.add_command(gc_cmd)
54cli.add_command(sync_cmd)
55cli.add_command(tree_cmd)
56cli.add_command(graphite_group)
57cli.add_command(hidden_shell_cmd)
58cli.add_command(prepare_cwd_recovery_cmd)
61def main() -> None:
62 """CLI entry point used by the `workstack` console script."""
63 cli()