diff options
Diffstat (limited to 'src/cli/spec')
| -rw-r--r-- | src/cli/spec/completion.rs | 14 | ||||
| -rw-r--r-- | src/cli/spec/machine.rs | 49 |
2 files changed, 63 insertions, 0 deletions
diff --git a/src/cli/spec/completion.rs b/src/cli/spec/completion.rs new file mode 100644 index 00000000..8cc27d7b --- /dev/null +++ b/src/cli/spec/completion.rs @@ -0,0 +1,14 @@ +use clap::{Arg, Command}; + +pub(super) fn command() -> Command { + Command::new("completion") + .visible_alias("completions") + .about("Generate shell completion scripts") + .arg( + Arg::new("shell") + .value_name("SHELL") + .required(true) + .value_parser(super::super::completion::SUPPORTED_SHELLS) + .help("Shell to generate completions for"), + ) +} diff --git a/src/cli/spec/machine.rs b/src/cli/spec/machine.rs new file mode 100644 index 00000000..188e27b9 --- /dev/null +++ b/src/cli/spec/machine.rs @@ -0,0 +1,49 @@ +use clap::{Arg, Command}; + +use super::{json_flag, option}; + +pub(super) fn command() -> Command { + Command::new("machine") + .about("Manage saved SSH machines") + .subcommand( + Command::new("list") + .about("List saved SSH machines") + .arg(json_flag()), + ) + .subcommand( + Command::new("add") + .about("Prepare the remote Herdr server and save an SSH machine") + .arg( + Arg::new("ssh-target") + .value_name("SSH_TARGET") + .required(true), + ) + .arg( + option("label", "LABEL") + .required(true) + .help("Set the machine label shown in the sidebar"), + ) + .arg( + option("remote-session", "NAME") + .help("Set the explicit Herdr session on the remote machine"), + ), + ) + .subcommand( + profile_command("rename", "Rename a saved SSH machine").arg( + option("label", "LABEL") + .required(true) + .help("Set the machine label shown in the sidebar"), + ), + ) + .subcommand(profile_command("remove", "Remove a saved SSH machine")) + .subcommand(profile_command("enable", "Enable a saved SSH machine")) + .subcommand(profile_command("disable", "Disable a saved SSH machine")) +} + +fn profile_command(name: &'static str, about: &'static str) -> Command { + Command::new(name).about(about).arg( + Arg::new("profile-id") + .value_name("PROFILE_ID") + .required(true), + ) +} |
