mod assets;
mod common;
mod derive;
mod network;
mod networks;
mod stage_protocol;
mod start;
#[cfg(test)]
mod tests;
use crate::mcp::{self, McpArgs};
use anyhow::Result;
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(name = "nctl")]
#[command(
about = "casper-devnet launcher for local Casper Network development networks",
long_about = None
)]
pub struct Cli {
#[command(subcommand)]
command: Command,
}
#[derive(Subcommand)]
enum Command {
Start(start::StartArgs),
Mcp(McpArgs),
Assets(assets::AssetsArgs),
Derive(derive::DeriveArgs),
Network(network::NetworkArgs),
Networks(networks::NetworksArgs),
}
pub async fn run() -> Result<()> {
let cli = Cli::parse();
match cli.command {
Command::Start(args) => start::run(args).await,
Command::Mcp(args) => mcp::run(args).await,
Command::Assets(args) => assets::run(args).await,
Command::Derive(args) => derive::run(args).await,
Command::Network(args) => network::run(args).await,
Command::Networks(args) => networks::run(args).await,
}
}