aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/ra_cli/src/main.rs27
1 files changed, 15 insertions, 12 deletions
diff --git a/crates/ra_cli/src/main.rs b/crates/ra_cli/src/main.rs
index 58fea2cd4..5302f6ed2 100644
--- a/crates/ra_cli/src/main.rs
+++ b/crates/ra_cli/src/main.rs
@@ -12,12 +12,15 @@ use ra_ide::{file_structure, Analysis};
12use ra_prof::profile; 12use ra_prof::profile;
13use ra_syntax::{AstNode, SourceFile}; 13use ra_syntax::{AstNode, SourceFile};
14 14
15type Result<T> = std::result::Result<T, Box<dyn Error + Send + Sync>>; 15type Result<T, E = Box<dyn Error + Send + Sync>> = std::result::Result<T, E>;
16 16
17fn main() -> Result<()> { 17fn main() -> Result<()> {
18 env_logger::try_init()?; 18 env_logger::try_init()?;
19 19
20 let command = Command::from_args()?; 20 let command = match Command::from_args()? {
21 Ok(it) => it,
22 Err(HelpPrinted) => return Ok(()),
23 };
21 match command { 24 match command {
22 Command::Parse { no_dump } => { 25 Command::Parse { no_dump } => {
23 let _p = profile("parsing"); 26 let _p = profile("parsing");
@@ -51,7 +54,6 @@ fn main() -> Result<()> {
51 Command::Bench { verbosity, path, op } => { 54 Command::Bench { verbosity, path, op } => {
52 analysis_bench::run(verbosity, path.as_ref(), op)?; 55 analysis_bench::run(verbosity, path.as_ref(), op)?;
53 } 56 }
54 Command::HelpPrinted => (),
55 } 57 }
56 58
57 Ok(()) 59 Ok(())
@@ -101,11 +103,12 @@ enum Command {
101 path: PathBuf, 103 path: PathBuf,
102 op: analysis_bench::Op, 104 op: analysis_bench::Op,
103 }, 105 },
104 HelpPrinted,
105} 106}
106 107
108struct HelpPrinted;
109
107impl Command { 110impl Command {
108 fn from_args() -> Result<Command> { 111 fn from_args() -> Result<Result<Command, HelpPrinted>> {
109 let mut matches = Arguments::from_env(); 112 let mut matches = Arguments::from_env();
110 let subcommand = matches.subcommand()?.unwrap_or_default(); 113 let subcommand = matches.subcommand()?.unwrap_or_default();
111 114
@@ -136,7 +139,7 @@ FLAGS:
136 -h, --help Prints help inforamtion 139 -h, --help Prints help inforamtion
137 --no-dump" 140 --no-dump"
138 ); 141 );
139 return Ok(Command::HelpPrinted); 142 return Ok(Err(HelpPrinted));
140 } 143 }
141 144
142 let no_dump = matches.contains("--no-dump"); 145 let no_dump = matches.contains("--no-dump");
@@ -155,7 +158,7 @@ USAGE:
155FLAGS: 158FLAGS:
156 -h, --help Prints help inforamtion" 159 -h, --help Prints help inforamtion"
157 ); 160 );
158 return Ok(Command::HelpPrinted); 161 return Ok(Err(HelpPrinted));
159 } 162 }
160 163
161 matches.finish().or_else(handle_extra_flags)?; 164 matches.finish().or_else(handle_extra_flags)?;
@@ -175,7 +178,7 @@ FLAGS:
175 -h, --help Prints help information 178 -h, --help Prints help information
176 -r, --rainbow" 179 -r, --rainbow"
177 ); 180 );
178 return Ok(Command::HelpPrinted); 181 return Ok(Err(HelpPrinted));
179 } 182 }
180 183
181 let rainbow = matches.contains(["-r", "--rainbow"]); 184 let rainbow = matches.contains(["-r", "--rainbow"]);
@@ -203,7 +206,7 @@ OPTIONS:
203ARGS: 206ARGS:
204 <PATH>" 207 <PATH>"
205 ); 208 );
206 return Ok(Command::HelpPrinted); 209 return Ok(Err(HelpPrinted));
207 } 210 }
208 211
209 let randomize = matches.contains("--randomize"); 212 let randomize = matches.contains("--randomize");
@@ -240,7 +243,7 @@ OPTIONS:
240ARGS: 243ARGS:
241 <PATH> Project to analyse" 244 <PATH> Project to analyse"
242 ); 245 );
243 return Ok(Command::HelpPrinted); 246 return Ok(Err(HelpPrinted));
244 } 247 }
245 248
246 let path: PathBuf = matches.opt_value_from_str("--path")?.unwrap_or_default(); 249 let path: PathBuf = matches.opt_value_from_str("--path")?.unwrap_or_default();
@@ -275,10 +278,10 @@ SUBCOMMANDS:
275 parse 278 parse
276 symbols" 279 symbols"
277 ); 280 );
278 return Ok(Command::HelpPrinted); 281 return Ok(Err(HelpPrinted));
279 } 282 }
280 }; 283 };
281 Ok(command) 284 Ok(Ok(command))
282 } 285 }
283} 286}
284 287