quickseal 0.1.4

Create Kubernetes SealedSecrets with a single secure command
Documentation
//! Seal CLI - Main entry point

use clap::Parser;
use seal::cli::{Cli, Commands};
use std::process;

fn main() {
    // Parse CLI arguments
    let cli = Cli::parse();

    // Initialize tracing/logging
    if cli.verbose {
        tracing_subscriber::fmt()
            .with_max_level(tracing::Level::DEBUG)
            .init();
    } else {
        tracing_subscriber::fmt()
            .with_max_level(tracing::Level::INFO)
            .init();
    }

    // Dispatch to command handler
    let result = match &cli.command {
        Commands::Create(cmd) => seal::cli::create_command(cmd),
    };

    // Handle errors with appropriate exit codes
    if let Err(e) = result {
        eprintln!("Error: {}", e);

        // Determine exit code based on error type
        let exit_code = if e.to_string().contains("kubeseal") {
            3 // Kubeseal not found or execution failed
        } else if e.to_string().contains("kubeconfig") || e.to_string().contains("context") {
            2 // Kubernetes configuration error
        } else if e.to_string().contains("Invalid") || e.to_string().contains("validation") {
            1 // User input validation error
        } else {
            99 // Unexpected internal error
        };

        process::exit(exit_code);
    }
}