Add env_pro core modules
This commit is contained in:
87
app/env_pro/cli.py
Normal file
87
app/env_pro/cli.py
Normal file
@@ -0,0 +1,87 @@
|
||||
"""Main CLI entry point for env-pro."""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import click
|
||||
from typing import Optional
|
||||
|
||||
|
||||
def get_active_profile() -> Optional[str]:
|
||||
"""Get the active profile from environment or config."""
|
||||
env_profile = os.environ.get("ENV_PRO_PROFILE")
|
||||
if env_profile:
|
||||
return env_profile
|
||||
|
||||
try:
|
||||
from env_pro.core.profile import get_active_profile
|
||||
return get_active_profile()
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
class ProfileContext:
|
||||
"""Context object to pass profile information."""
|
||||
def __init__(self, profile: Optional[str] = None):
|
||||
self.profile = profile or get_active_profile() or "default"
|
||||
|
||||
|
||||
pass_profile_context = click.make_pass_decorator(ProfileContext)
|
||||
|
||||
|
||||
@click.group()
|
||||
@click.version_option(version="1.0.0")
|
||||
@click.option("--profile", "-p", help="Specify profile to use")
|
||||
@click.pass_context
|
||||
def main(ctx: click.Context, profile: Optional[str]) -> None:
|
||||
"""env-pro: Smart Environment Variable Manager CLI.
|
||||
|
||||
Manage environment variables with multi-profile support, encryption,
|
||||
validation, and template generation.
|
||||
"""
|
||||
ctx.ensure_object(ProfileContext)
|
||||
if profile:
|
||||
ctx.obj.profile = profile
|
||||
else:
|
||||
ctx.obj.profile = get_active_profile()
|
||||
|
||||
|
||||
@main.group()
|
||||
def profile():
|
||||
"""Manage environment profiles."""
|
||||
pass
|
||||
|
||||
|
||||
@main.group()
|
||||
def key():
|
||||
"""Manage encryption keys."""
|
||||
pass
|
||||
|
||||
|
||||
@main.group()
|
||||
def template():
|
||||
"""Manage templates."""
|
||||
pass
|
||||
|
||||
|
||||
@main.group()
|
||||
def encrypt():
|
||||
"""Encryption operations."""
|
||||
pass
|
||||
|
||||
|
||||
def import_commands():
|
||||
"""Import all command modules to register them."""
|
||||
from env_pro.commands import core
|
||||
from env_pro.commands import profile_cmds
|
||||
from env_pro.commands import encrypt_cmds
|
||||
from env_pro.commands import template_cmds
|
||||
from env_pro.commands import validate_cmd
|
||||
from env_pro.commands import gitignore_cmd
|
||||
from env_pro.commands import export_cmd
|
||||
|
||||
|
||||
import_commands()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user