"""Validation commands for env-pro.""" import click @click.command() @click.option("--schema", "-s", help="Path to schema file") @click.option("--verbose/--quiet", default=False) def validate(schema: str, verbose: bool): """Validate environment variables against schema.""" from pathlib import Path from env_pro.core.validator import Validator from env_pro.core.profile import get_active_profile, get_profile_vars schema_path = Path(schema) if schema else Path.cwd() / ".env.schema.yaml" if not schema_path.exists(): if verbose: click.echo("No schema file found. Create .env.schema.yaml to enable validation.") else: click.echo("ok") return validator = Validator.from_file(schema_path) profile = get_active_profile() or "default" vars = get_profile_vars(profile) errors = validator.validate(vars) if errors: click.echo(f"Validation failed with {len(errors)} error(s):") for error in errors: click.echo(f" {error}") raise click.ClickException("Validation failed") else: click.echo("Validation passed") @click.command() def check(): """Check for required variables.""" from env_pro.core.profile import get_active_profile, get_profile_vars from env_pro.core.validator import Validator profile = get_active_profile() or "default" vars = get_profile_vars(profile) validator = Validator.from_file() if validator.schema is None: click.echo("No schema defined") return errors = validator.validate(vars) required_errors = [e for e in errors if "missing" in e.message.lower()] if required_errors: click.echo(f"Missing required variables:") for e in required_errors: click.echo(f" {e.key}") else: click.echo("All required variables are set")