import os import configparser import click from .commands.metal import metal_nodes from .commands.vm import virtual_machines from .commands.k8s import kubernetes_nodes from .commands.export import export_data from .visual import visual_dashboard # Default configuration file path CONFIG_FILE_PATH = os.path.expanduser("~/.config/metalcheck.conf") # Load configuration def load_config(): config = configparser.ConfigParser() if os.path.exists(CONFIG_FILE_PATH): config.read(CONFIG_FILE_PATH) return config @click.group() @click.option("--base-url", help="Set the backend base URL.") @click.pass_context def cli(ctx, base_url): """ Metal Check CLI: A command-line interface for managing and monitoring Metal Check resources. """ config = load_config() # Default backend URL default_base_url = config.get("DEFAULT", "base_url", fallback="http://localhost:8000") ctx.ensure_object(dict) ctx.obj["BASE_URL"] = base_url or default_base_url # Register commands cli.add_command(metal_nodes, name="metal") cli.add_command(virtual_machines, name="vm") cli.add_command(kubernetes_nodes, name="k8s") cli.add_command(export_data, name="export") cli.add_command(visual_dashboard, name="visual") if __name__ == "__main__": cli()