cli/commands/shell.rs
1use clap::Subcommand;
2
3#[derive(Subcommand, Debug)]
4pub enum ShellCommands {
5 /// List available shell preset categories and their scripts
6 List,
7 /// Show detailed information about a shell preset category or command
8 Info {
9 /// Category, command, or category/command to inspect
10 #[arg(value_name = "TARGET")]
11 target: String,
12 },
13 /// Review and recover an interrupted shell launcher creation
14 Recover {
15 /// Approve the displayed recovery Plan without prompting
16 #[arg(long)]
17 yes: bool,
18 },
19 /// Install shell presets and create bin symlinks.
20 /// Run 'shine shell list' to see available categories.
21 Install {
22 /// Category or category/command to install (e.g. "proxy" or "utils/shine-env-export"). Installs all if omitted.
23 /// Run 'shine shell list' to see available categories.
24 #[arg(value_name = "TARGET")]
25 target: Option<String>,
26 /// Print what would be linked without making any changes
27 #[arg(long)]
28 dry_run: bool,
29 /// Replace user-modified managed files, links, and profile integration
30 #[arg(long)]
31 replace_managed: bool,
32 /// Approve the displayed lifecycle Plan without prompting
33 #[arg(long, conflicts_with = "dry_run")]
34 yes: bool,
35 },
36 /// Uninstall shell presets and remove bin symlinks.
37 /// Run 'shine shell list' to see installed categories.
38 Uninstall {
39 /// Category or category/command to uninstall. Uninstalls all if omitted.
40 /// Run 'shine shell list' to see installed categories.
41 #[arg(value_name = "TARGET")]
42 target: Option<String>,
43 /// Also remove empty managed directories after uninstall
44 #[arg(long)]
45 purge: bool,
46 /// Print what would be removed without making any changes
47 #[arg(long)]
48 dry_run: bool,
49 /// Approve the displayed lifecycle Plan without prompting
50 #[arg(long, conflicts_with = "dry_run")]
51 yes: bool,
52 },
53}