use anyhow::{Context, Result};
use clap::{Parser, Subcommand};
mod commands;
#[derive(Parser)]
#[command(author, version, about, long_about = None)]
struct Cli {
#[command(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
enum Commands {
Deploy {
#[arg(value_name = "PROGRAM_FILE")]
program_file: Option<String>,
#[arg(short, long, default_value = "localnet")]
network: String,
#[arg(short, long)]
keypair: Option<String>,
},
Monitor {
#[arg(value_name = "PROGRAM_ID")]
program_id: String,
#[arg(short, long, default_value = "localnet")]
network: String,
#[arg(short, long)]
account: Option<String>,
},
Test {
#[arg(value_name = "PATH")]
path: Option<String>,
#[arg(short, long)]
watch: bool,
},
}
fn main() -> Result<()> {
tracing_subscriber::fmt::init();
let cli = Cli::parse();
match &cli.command {
Commands::Deploy { program_file, network, keypair } => {
println!("Would deploy program: {:?} to network: {}", program_file, network);
Ok(())
}
Commands::Monitor { program_id, network, account } => {
println!("Would monitor program ID: {} on network: {}", program_id, network);
if let Some(acct) = account {
println!("Filtering by account: {}", acct);
}
Ok(())
}
Commands::Test { path, watch } => {
println!("Would run tests at path: {:?}", path);
if *watch {
println!("In watch mode");
}
Ok(())
}
}
}