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
//! Init command arguments
use clap::Args;
/// Initialize a new robot project
#[derive(Args, Debug)]
pub struct InitArgs {
/// Project name (if not provided, will prompt interactively)
pub name: Option<String>,
/// Template to use (basic, rover, arm, humanoid). If not provided, will prompt interactively
#[arg(short, long)]
pub template: Option<String>,
/// Skip simulation generation
#[arg(long)]
pub skip_sim: bool,
/// Skip adding example nodes (speaker, listener) to the project
#[arg(long)]
pub no_examples: bool,
/// Skip interactive wizard and use defaults/provided arguments
#[arg(long)]
pub non_interactive: bool,
/// Hardware platform your robot runs on: a target triple (e.g.
/// "aarch64-unknown-linux-gnu") or a platform label (e.g. "Raspberry Pi 4/5",
/// case-insensitive). Only used in non-interactive mode - the interactive wizard prompts for
/// this instead. Defaults to Raspberry Pi 4/5 (aarch64-unknown-linux-gnu) if omitted.
#[arg(long)]
pub robot_platform: Option<String>,
/// Comma-separated list of hardware platforms the "remote" target builds for: target
/// triples (e.g. "x86_64-unknown-linux-gnu") or platform labels (e.g. "Generic 64-bit Linux
/// (x86_64)"), case-insensitive. Only used in non-interactive mode - the interactive wizard
/// prompts for this instead. Defaults to Generic 64-bit Linux (x86_64-unknown-linux-gnu) if
/// omitted.
#[arg(long)]
pub remote_platform: Option<String>,
/// Update existing project: sync missing node configs without recreating files
#[arg(long)]
pub update: bool,
}