Coverage for cli / commands / config_cmd.py: 92%

24 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-04-30 21:47 +0000

1"""Configuration commands.""" 

2 

3from typing import Any 

4 

5import click 

6 

7from ..config import GCOConfig 

8from ..output import get_output_formatter 

9 

10pass_config = click.make_pass_decorator(GCOConfig, ensure=True) 

11 

12 

13@click.group(name="config-cmd") 

14@pass_config 

15def config_cmd(config: Any) -> None: 

16 """Manage CLI configuration.""" 

17 pass 

18 

19 

20@config_cmd.command("show") 

21@pass_config 

22def show_config(config: Any) -> None: 

23 """Show current configuration.""" 

24 formatter = get_output_formatter(config) 

25 formatter.print(config.to_dict()) 

26 

27 

28@config_cmd.command("init") 

29@click.option("--force", "-f", is_flag=True, help="Overwrite existing config") 

30@pass_config 

31def init_config(config: Any, force: Any) -> None: 

32 """Initialize configuration file.""" 

33 from pathlib import Path 

34 

35 config_path = Path.home() / ".gco" / "config.yaml" 

36 

37 if config_path.exists() and not force: 37 ↛ 38line 37 didn't jump to line 38 because the condition on line 37 was never true

38 click.confirm(f"Config file exists at {config_path}. Overwrite?", abort=True) 

39 

40 config.save(str(config_path)) 

41 click.echo(f"Configuration saved to {config_path}")