From 165f5c65772a157d842f766100a0ecc30d8ef351 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Tue, 21 Apr 2020 20:23:01 -0400 Subject: Don't panic on `rust-analyzer --help` Special case handling for `-h` and `--help` if no subcommand is given. Closes #4068 --- crates/rust-analyzer/src/bin/args.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/crates/rust-analyzer/src/bin/args.rs b/crates/rust-analyzer/src/bin/args.rs index b14409c39..8e3ca9343 100644 --- a/crates/rust-analyzer/src/bin/args.rs +++ b/crates/rust-analyzer/src/bin/args.rs @@ -75,6 +75,10 @@ impl Args { let subcommand = match matches.subcommand()? { Some(it) => it, None => { + if matches.contains(["-h", "--help"]) { + print_subcommands(); + return Ok(Err(HelpPrinted)); + } matches.finish().or_else(handle_extra_flags)?; return Ok(Ok(Args { verbosity, command: Command::RunServer })); } @@ -267,8 +271,17 @@ ARGS: } "proc-macro" => Command::ProcMacro, _ => { - eprintln!( - "\ + print_subcommands(); + return Ok(Err(HelpPrinted)); + } + }; + Ok(Ok(Args { verbosity, command })) + } +} + +fn print_subcommands() { + eprintln!( + "\ rust-analyzer USAGE: @@ -285,12 +298,7 @@ SUBCOMMANDS: proc-macro parse symbols" - ); - return Ok(Err(HelpPrinted)); - } - }; - Ok(Ok(Args { verbosity, command })) - } + ) } pub(crate) struct HelpPrinted; -- cgit v1.2.3