#!/usr/bin/env python3 import argparse import sys import config import cluster_aggregator import output_formatter def parse_args(): parser = argparse.ArgumentParser(description="Monitor Navidrome LiteFS/Consul cluster status.") parser.add_argument("--consul-url", help="Override Consul API URL (default from env or hardcoded)") parser.add_argument("--no-color", action="store_true", help="Disable colorized output") return parser.parse_args() def main(): args = parse_args() # Resolve Consul URL consul_url = config.get_consul_url(args.consul_url) try: # Fetch and aggregate data cluster_data = cluster_aggregator.get_cluster_status(consul_url) # Format and print output print(output_formatter.format_summary(cluster_data, use_color=not args.no_color)) print("\n" + output_formatter.format_node_table(cluster_data["nodes"], use_color=not args.no_color)) except Exception as e: print(f"Error: {e}", file=sys.stderr) sys.exit(1) if __name__ == "__main__": main()