1mod assets;
2mod common;
3mod derive;
4mod network;
5mod networks;
6mod stage_protocol;
7mod start;
8
9#[cfg(test)]
10mod tests;
11
12use crate::mcp::{self, McpArgs};
13use anyhow::Result;
14use clap::{Parser, Subcommand};
15
16#[derive(Parser)]
18#[command(name = "nctl")]
19#[command(
20 about = "casper-devnet launcher for local Casper Network development networks",
21 long_about = None
22)]
23pub struct Cli {
24 #[command(subcommand)]
25 command: Command,
26}
27
28#[derive(Subcommand)]
30enum Command {
31 Start(start::StartArgs),
33 Mcp(McpArgs),
35 Assets(assets::AssetsArgs),
37 Derive(derive::DeriveArgs),
39 Network(network::NetworkArgs),
41 Networks(networks::NetworksArgs),
43}
44
45pub async fn run() -> Result<()> {
47 let cli = Cli::parse();
48 match cli.command {
49 Command::Start(args) => start::run(args).await,
50 Command::Mcp(args) => mcp::run(args).await,
51 Command::Assets(args) => assets::run(args).await,
52 Command::Derive(args) => derive::run(args).await,
53 Command::Network(args) => network::run(args).await,
54 Command::Networks(args) => networks::run(args).await,
55 }
56}