"""Template commands for env-pro.""" import click from typing import Dict @click.command() def list(): """List available templates.""" from env_pro.core.template import TemplateManager manager = TemplateManager() templates = manager.list_templates() click.echo("Available templates:") for t in templates: marker = " (builtin)" if t["builtin"] else "" click.echo(f" {t['name']} - {t['description']}{marker}") @click.command() @click.argument("name") @click.option("--output", "-o", help="Output file path") @click.option("--var", multiple=True, help="Set template variables (KEY=VALUE)") def apply(name: str, output: str, var): """Apply a template.""" from env_pro.core.template import TemplateManager variables = {} for v in var: if "=" in v: k, val = v.split("=", 1) variables[k.strip()] = val.strip() manager = TemplateManager() content = manager.apply_template(name, variables) if output: from pathlib import Path Path(output).write_text(content) click.echo(f"Written to {output}") else: click.echo(content) @click.command() @click.argument("name") @click.argument("description", required=False) @click.option("--var", multiple=True, help="Add variable (NAME:TYPE:DEFAULT:DESCRIPTION)") def create(name: str, description: str, var): """Create a custom template.""" from env_pro.core.template import TemplateManager from env_pro.utils.helpers import find_env_file import os config_home = os.environ.get("ENV_PRO_HOME", "~/.config/env-pro") from pathlib import Path custom_dir = Path(config_home) / "templates" manager = TemplateManager(custom_templates_dir=custom_dir) variables = {} for v in var: parts = v.split(":") var_name = parts[0] if parts else "" var_default = parts[1] if len(parts) > 1 else "" var_desc = parts[2] if len(parts) > 2 else "" variables[var_name] = { "default": var_default, "description": var_desc } manager.create_custom_template(name, variables, description or "") click.echo(f"Created custom template '{name}' in {custom_dir}")