1use clap::{Parser, Subcommand};
7use std::path::PathBuf;
8
9use crate::commands::{
11 AuthCommand, BuildArgs, DevArgs, DiagnosticsCommand, FormatArgs, InitArgs, LintArgs, LogsArgs, ModelsCommand,
12 NodeArgs, RunArgs, SetupArgs, TopicsCommand, TopologyArgs,
13};
14
15#[derive(Parser)]
16#[command(name = "mecha10")]
17#[command(about = "Mecha10 CLI - Build autonomous robots with RL", long_about = None)]
18#[command(version)]
19pub struct Cli {
20 #[arg(short, long, default_value = "info", global = true)]
22 pub log_level: String,
23
24 #[arg(short, long, global = true)]
26 pub config: Option<PathBuf>,
27
28 #[command(subcommand)]
29 pub command: Commands,
30}
31
32#[derive(Subcommand)]
33pub enum Commands {
34 Auth {
36 #[command(subcommand)]
37 command: AuthCommand,
38 },
39
40 Build(#[command(flatten)] BuildArgs),
42
43 Dev(#[command(flatten)] DevArgs),
45
46 Diagnostics {
48 #[command(subcommand)]
49 command: DiagnosticsCommand,
50 },
51
52 Format(#[command(flatten)] FormatArgs),
54
55 Init(#[command(flatten)] InitArgs),
57
58 Lint(#[command(flatten)] LintArgs),
60
61 Logs(#[command(flatten)] LogsArgs),
63
64 Models {
66 #[command(subcommand)]
67 command: ModelsCommand,
68 },
69
70 #[command(hide = true)]
72 Node(#[command(flatten)] NodeArgs),
73
74 Run(#[command(flatten)] RunArgs),
76
77 Setup(#[command(flatten)] SetupArgs),
79
80 Status,
82
83 Topics {
85 #[command(subcommand)]
86 command: TopicsCommand,
87 },
88
89 Topology(#[command(flatten)] TopologyArgs),
91}