Skip to main content

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}