Skip to main content

casper_devnet/
cli.rs

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/// CLI entrypoint for the devnet launcher.
17#[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/// Top-level CLI subcommands.
29#[derive(Subcommand)]
30enum Command {
31    /// Setup assets (if needed) and start the devnet.
32    Start(start::StartArgs),
33    /// Run MCP control plane server.
34    Mcp(McpArgs),
35    /// Manage assets bundles.
36    Assets(assets::AssetsArgs),
37    /// Derive deterministic account material from a BIP32 path.
38    Derive(derive::DeriveArgs),
39    /// Inspect a managed network.
40    Network(network::NetworkArgs),
41    /// Manage local network directories.
42    Networks(networks::NetworksArgs),
43}
44
45/// Parses CLI and runs the selected subcommand.
46pub 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}