Add env_pro command modules

This commit is contained in:
2026-01-31 01:37:00 +00:00
parent 2bfc1bf906
commit c0d639fcad

View File

@@ -0,0 +1,75 @@
"""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}")