1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
use anyhow::Error;
use clap::{Parser, Subcommand};
use fehler::throws;
mod command;
use command::ExplorerCommand;
use command::KeyPairCommand;
#[derive(Parser)]
#[clap(version, propagate_version = true)]
struct Cli {
#[clap(subcommand)]
command: Command,
}
#[derive(Subcommand)]
enum Command {
Build {
#[clap(short, long, default_value = "./")]
root: String,
},
KeyPair {
#[clap(subcommand)]
subcmd: KeyPairCommand,
},
Test {
#[clap(short, long, default_value = "./")]
root: String,
},
Localnet,
Explorer {
#[clap(subcommand)]
subcmd: ExplorerCommand,
},
Init,
}
#[throws]
pub async fn start() {
let cli = Cli::parse();
match cli.command {
Command::Build { root } => command::build(root).await?,
Command::KeyPair { subcmd } => command::keypair(subcmd)?,
Command::Test { root } => command::test(root).await?,
Command::Localnet => command::localnet().await?,
Command::Explorer { subcmd } => command::explorer(subcmd).await?,
Command::Init => command::init().await?,
}
}