use clap::{Parser, Subcommand};
mod commands;
use seedelf_cli::constants::VARIANT;
use seedelf_cli::setup;
#[derive(Parser)]
#[command(name = "seedelf-cli")]
#[command(version = env!("CARGO_PKG_VERSION"))]
#[command(about = "A Cardano Stealth Wallet", long_about = None)]
struct Cli {
#[arg(long, global = true, display_order = 98)]
preprod: bool,
#[arg(long, global = true, default_value_t = VARIANT, display_order = 99)]
variant: u64,
#[command(subcommand)]
command: Option<Commands>, }
#[derive(Subcommand)]
enum Commands {
Welcome,
Create(commands::create::LabelArgs),
Remove(commands::remove::RemoveArgs),
Balance,
Fund(commands::fund::FundArgs),
Transfer(commands::transfer::TransforArgs),
Sweep(commands::sweep::SweepArgs),
Util(commands::util::UtilArgs),
Dapp(commands::dapp::DappArgs),
}
#[tokio::main]
async fn main() {
let cli: Cli = Cli::parse();
if cli.command.is_some() {
setup::check_and_prepare_seedelf();
}
match cli.command {
Some(Commands::Welcome) => {
commands::welcome::run();
}
Some(Commands::Balance) => {
if let Err(err) = commands::balance::run(cli.preprod, cli.variant).await {
eprintln!("Error: {}", err);
}
}
Some(Commands::Transfer(args)) => {
if let Err(err) = commands::transfer::run(args, cli.preprod, cli.variant).await {
eprintln!("Error: {}", err);
}
}
Some(Commands::Sweep(args)) => {
if let Err(err) = commands::sweep::run(args, cli.preprod, cli.variant).await {
eprintln!("Error: {}", err);
}
}
Some(Commands::Fund(args)) => {
if let Err(err) = commands::fund::run(args, cli.preprod, cli.variant).await {
eprintln!("Error: {}", err);
}
}
Some(Commands::Create(args)) => {
if let Err(err) = commands::create::run(args, cli.preprod, cli.variant).await {
eprintln!("Error: {}", err);
}
}
Some(Commands::Remove(args)) => {
if let Err(err) = commands::remove::run(args, cli.preprod, cli.variant).await {
eprintln!("Error: {}", err);
}
}
Some(Commands::Util(util_command)) => {
commands::util::run(util_command, cli.preprod, cli.variant).await
}
Some(Commands::Dapp(dapp_command)) => {
commands::dapp::run(dapp_command, cli.preprod, cli.variant).await
}
None => {
println!("No subcommand provided. Use --help for more information.");
}
}
}