mod auth;
mod cli;
mod client;
mod commands;
mod config;
mod crypto;
mod error;
mod output;
use clap::Parser;
use cli::{Cli, Commands};
use error::Result;
use output::print_error;
#[tokio::main]
async fn main() {
if let Err(e) = run().await {
print_error(&format!("Error: {}", e));
std::process::exit(1);
}
}
async fn run() -> Result<()> {
let cli = Cli::parse();
if cli.no_color {
colored::control::set_override(false);
}
match &cli.command {
Commands::Login(args) => commands::login::execute(args).await,
Commands::Logout => commands::logout::execute().await,
Commands::Whoami => commands::whoami::execute().await,
Commands::Accounts { command } => commands::accounts::execute(command).await,
Commands::App { command } => commands::app::execute(command, &cli).await,
Commands::User { command } => commands::user::execute(command, &cli).await,
Commands::Admin { command } => commands::admin::execute(command, &cli).await,
Commands::Config { command } => commands::config::execute(command).await,
}
}