"""Config CLI command implementations.""" from __future__ import annotations from pathlib import Path import click from vlm.cli_helpers import command_error from vlm.config import create_default_config, validate_config from vlm.context import CLIContext def config_init_cmd(ctx: CLIContext, path: Path) -> None: """Initialize configuration file with defaults.""" try: if path.exists(): click.echo(f"Configuration file already exists at {path}", err=True) if not click.confirm("Overwrite existing configuration?"): click.echo("Configuration initialization cancelled.") return create_default_config(path) click.echo(f"Configuration file created at {path}") click.echo("Edit this file to customize your settings.") except Exception as e: command_error( ctx, f"Error creating configuration: {e}", f"Configuration creation failed: {e}", exc_info=True, ) def config_show_cmd(ctx: CLIContext) -> None: """Show current configuration.""" cfg = ctx.config click.echo("Current configuration:") click.echo(f" Library root: {cfg.library_root}") click.echo(f" Video extensions: {', '.join(cfg.video_extensions)}") click.echo(f" Movie template: {cfg.movie_template}") click.echo(f" Series template: {cfg.series_template}") click.echo(f" Movie filename template: {cfg.movie_filename_template}") click.echo(f" Series filename template: {cfg.series_filename_template}") click.echo(f" Quarantine directory: {cfg.quarantine_dir}") click.echo(f" Workspace directory: {cfg.workspace_dir}") click.echo(f" Log level: {cfg.log_level}") def config_validate_cmd(ctx: CLIContext) -> None: """Validate configuration.""" cfg = ctx.config errors = validate_config(cfg) if not errors: click.echo("Configuration is valid.") else: click.echo("Configuration validation errors:", err=True) for error in errors: click.echo(f" - {error}", err=True) command_error(ctx, "Configuration validation failed.", "Configuration validation failed")