AkurAI Build
Menu

Public repository / 916c7bd92efd76401c8fd302d68474eb280ed1cc

AkurAI-PassVault / crates/passvault-cli/src/main.rs

Latest change 58558732228cea9b646049555021e899ee300f35 - Checkpoint WIP + add AkurAI Build CI/CD pipeline by Ólafur Búi Ólafsson

mod cmd_mcp;
mod cmd_tool;

use std::env;

fn main() {
    let args: Vec<String> = env::args().collect();
    let subcommand = args.get(1).map(String::as_str).unwrap_or("help");
    let result = match subcommand {
        "mcp" | "serve" => {
            cmd_mcp::run();
            Ok(())
        }
        "tools" => cmd_tool::list(),
        "tool" => args
            .get(2)
            .ok_or_else(|| "tool needs an MCP tool name".to_string())
            .and_then(|name| cmd_tool::run(name, args.iter().any(|arg| arg == "--confirm"))),
        "version" | "-v" | "--version" => {
            println!("akurai-passvault {}", env!("CARGO_PKG_VERSION"));
            Ok(())
        }
        "help" | "-h" | "--help" => {
            print_help();
            Ok(())
        }
        other => Err(format!("unknown command '{other}'")),
    };
    if let Err(error) = result {
        eprintln!("error: {error}");
        std::process::exit(1);
    }
}

fn print_help() {
    println!("akurai-passvault {}", env!("CARGO_PKG_VERSION"));
    println!("USAGE:");
    println!("  akurai-passvault mcp|serve");
    println!("  akurai-passvault tools");
    println!("  akurai-passvault tool NAME [--confirm] < arguments.json");
    println!("      JSON arguments are read from stdin");
    println!("      delete_entry and delete_folder require --confirm");
    println!("      system_status reports health/counts without secret values");
    println!("  akurai-passvault version");
    println!();
    println!("Tool results redact password, token, and secret fields.");
}