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

1import click 

2 

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 

23 

24CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"]) # terse help flags 

25 

26 

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) 

35 

36 

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) 

59 

60 

61def main() -> None: 

62 """CLI entry point used by the `workstack` console script.""" 

63 cli()