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
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-30 21:47 +0000
1"""Configuration commands."""
3from typing import Any
5import click
7from ..config import GCOConfig
8from ..output import get_output_formatter
10pass_config = click.make_pass_decorator(GCOConfig, ensure=True)
13@click.group(name="config-cmd")
14@pass_config
15def config_cmd(config: Any) -> None:
16 """Manage CLI configuration."""
17 pass
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())
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
35 config_path = Path.home() / ".gco" / "config.yaml"
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)
40 config.save(str(config_path))
41 click.echo(f"Configuration saved to {config_path}")