diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 299 |
1 files changed, 153 insertions, 146 deletions
diff --git a/src/main.rs b/src/main.rs index 88c9be2dd..028e98389 100644 --- a/src/main.rs +++ b/src/main.rs @@ -88,153 +88,160 @@ fn main() { .help("Print the main initialization script (as opposed to the init stub)"); let long_version = crate::shadow::clap_version(); - let mut app = - App::new("starship") - .about("The cross-shell prompt for astronauts. ☄🌌️") - // pull the version number from Cargo.toml - .version(shadow::PKG_VERSION) - .long_version(long_version.as_str()) - // pull the authors from Cargo.toml - .author(crate_authors!()) - .after_help("https://github.com/starship/starship") - .setting(AppSettings::SubcommandRequiredElseHelp) - .subcommand( - SubCommand::with_name("init") - .about("Prints the shell function used to execute starship") - .arg(&shell_arg) - .arg(&init_scripts_arg), - ) - .subcommand( - SubCommand::with_name("prompt") - .about("Prints the full starship prompt") - .arg( - Arg::with_name("right") - .long("right") - .help("Print the right prompt (instead of the standard left prompt)"), - ) - .arg(&status_code_arg) - .arg(&pipestatus_arg) - .arg(&terminal_width_arg) - .arg(&path_arg) - .arg(&logical_path_arg) - .arg(&cmd_duration_arg) - .arg(&keymap_arg) - .arg(&jobs_arg), - ) - .subcommand( - SubCommand::with_name("module") - .about("Prints a specific prompt module") - .arg( - Arg::with_name("name") - .help("The name of the module to be printed") - .required(true) - .required_unless("list"), - ) - .arg( - Arg::with_name("list") - .short("l") - .long("list") - .help("List out all supported modules"), - ) - .arg(&status_code_arg) - .arg(&pipestatus_arg) - .arg(&terminal_width_arg) - .arg(&path_arg) - .arg(&logical_path_arg) - .arg(&cmd_duration_arg) - .arg(&keymap_arg) - .arg(&jobs_arg), - ) - .subcommand( - SubCommand::with_name("config") - .alias("configure") - .about("Edit the starship configuration") - .arg( - Arg::with_name("name") - .help("Configuration key to edit") - .required(false) - .requires("value"), - ) - .arg(Arg::with_name("value").help("Value to place into that key")), - ) - .subcommand( - SubCommand::with_name("print-config") - .about("Prints the computed starship configuration") - .arg( - Arg::with_name("default") - .short("d") - .long("default") - .help("Print the default instead of the computed config") - .takes_value(false), - ) - .arg( - Arg::with_name("name") - .help("Configuration keys to print") - .multiple(true) - .required(false), - ), - ) - .subcommand( - SubCommand::with_name("toggle") - .about("Toggle a given starship module") - .arg( - Arg::with_name("name") - .help("The name of the module to be toggled") - .required(true), - ) - .arg( - Arg::with_name("key") - .help("The key of the config to be toggled") - .required(false) - .required_unless("name"), - ), - ) - .subcommand(SubCommand::with_name("bug-report").about( + let mut app = App::new("starship") + .about("The cross-shell prompt for astronauts. ☄🌌️") + // pull the version number from Cargo.toml + .version(shadow::PKG_VERSION) + .long_version(long_version.as_str()) + // pull the authors from Cargo.toml + .author(crate_authors!()) + .after_help("https://github.com/starship/starship") + .setting(AppSettings::SubcommandRequiredElseHelp) + .subcommand( + SubCommand::with_name("init") + .about("Prints the shell function used to execute starship") + .arg(&shell_arg) + .arg(&init_scripts_arg), + ) + .subcommand( + SubCommand::with_name("prompt") + .about("Prints the full starship prompt") + .arg( + Arg::with_name("right") + .long("right") + .help("Print the right prompt (instead of the standard left prompt)"), + ) + .arg( + Arg::with_name("continuation") + .long("continuation") + .help("Print the continuation prompt (instead of the standard left prompt)") + .conflicts_with("right"), + ) + .arg(&status_code_arg) + .arg(&pipestatus_arg) + .arg(&terminal_width_arg) + .arg(&path_arg) + .arg(&logical_path_arg) + .arg(&cmd_duration_arg) + .arg(&keymap_arg) + .arg(&jobs_arg), + ) + .subcommand( + SubCommand::with_name("module") + .about("Prints a specific prompt module") + .arg( + Arg::with_name("name") + .help("The name of the module to be printed") + .required(true) + .required_unless("list"), + ) + .arg( + Arg::with_name("list") + .short("l") + .long("list") + .help("List out all supported modules"), + ) + .arg(&status_code_arg) + .arg(&pipestatus_arg) + .arg(&terminal_width_arg) + .arg(&path_arg) + .arg(&logical_path_arg) + .arg(&cmd_duration_arg) + .arg(&keymap_arg) + .arg(&jobs_arg), + ) + .subcommand( + SubCommand::with_name("config") + .alias("configure") + .about("Edit the starship configuration") + .arg( + Arg::with_name("name") + .help("Configuration key to edit") + .required(false) + .requires("value"), + ) + .arg(Arg::with_name("value").help("Value to place into that key")), + ) + .subcommand( + SubCommand::with_name("print-config") + .about("Prints the computed starship configuration") + .arg( + Arg::with_name("default") + .short("d") + .long("default") + .help("Print the default instead of the computed config") + .takes_value(false), + ) + .arg( + Arg::with_name("name") + .help("Configuration keys to print") + .multiple(true) + .required(false), + ), + ) + .subcommand( + SubCommand::with_name("toggle") + .about("Toggle a given starship module") + .arg( + Arg::with_name("name") + .help("The name of the module to be toggled") + .required(true), + ) + .arg( + Arg::with_name("key") + .help("The key of the config to be toggled") + .required(false) + .required_unless("name"), + ), + ) + .subcommand( + SubCommand::with_name("bug-report").about( "Create a pre-populated GitHub issue with information about your configuration", - )) - .subcommand( - SubCommand::with_name("time") - .about("Prints time in milliseconds") - .settings(&[AppSettings::Hidden]), - ) - .subcommand( - SubCommand::with_name("explain") - .about("Explains the currently showing modules") - .arg(&status_code_arg) - .arg(&pipestatus_arg) - .arg(&terminal_width_arg) - .arg(&path_arg) - .arg(&logical_path_arg) - .arg(&cmd_duration_arg) - .arg(&keymap_arg) - .arg(&jobs_arg), - ) - .subcommand( - SubCommand::with_name("timings") - .about("Prints timings of all active modules") - .arg(&status_code_arg) - .arg(&pipestatus_arg) - .arg(&terminal_width_arg) - .arg(&path_arg) - .arg(&logical_path_arg) - .arg(&cmd_duration_arg) - .arg(&keymap_arg) - .arg(&jobs_arg), - ) - .subcommand( - SubCommand::with_name("completions") - .about("Generate starship shell completions for your shell to stdout") - .arg( - Arg::with_name("shell") - .takes_value(true) - .possible_values(&Shell::variants()) - .help("the shell to generate completions for") - .value_name("SHELL") - .required(true) - .env("STARSHIP_SHELL"), - ), - ) - .subcommand(SubCommand::with_name("session").about("Generate random session key")); + ), + ) + .subcommand( + SubCommand::with_name("time") + .about("Prints time in milliseconds") + .settings(&[AppSettings::Hidden]), + ) + .subcommand( + SubCommand::with_name("explain") + .about("Explains the currently showing modules") + .arg(&status_code_arg) + .arg(&pipestatus_arg) + .arg(&terminal_width_arg) + .arg(&path_arg) + .arg(&logical_path_arg) + .arg(&cmd_duration_arg) + .arg(&keymap_arg) + .arg(&jobs_arg), + ) + .subcommand( + SubCommand::with_name("timings") + .about("Prints timings of all active modules") + .arg(&status_code_arg) + .arg(&pipestatus_arg) + .arg(&terminal_width_arg) + .arg(&path_arg) + .arg(&logical_path_arg) + .arg(&cmd_duration_arg) + .arg(&keymap_arg) + .arg(&jobs_arg), + ) + .subcommand( + SubCommand::with_name("completions") + .about("Generate starship shell completions for your shell to stdout") + .arg( + Arg::with_name("shell") + .takes_value(true) + .possible_values(&Shell::variants()) + .help("the shell to generate completions for") + .value_name("SHELL") + .required(true) + .env("STARSHIP_SHELL"), + ), + ) + .subcommand(SubCommand::with_name("session").about("Generate random session key")); let matches = app.clone().get_matches(); |