##// END OF EJS Templates
rhg: Remove error message on unsupported CLI arguments...
Simon Sapin -
r47333:21d3b40b default
parent child Browse files
Show More
@@ -33,6 +33,14 b' impl CommandError {'
33 }
33 }
34 }
34 }
35
35
36 /// For now we don’t differenciate between invalid CLI args and valid for `hg`
37 /// but not supported yet by `rhg`.
38 impl From<clap::Error> for CommandError {
39 fn from(_: clap::Error) -> Self {
40 CommandError::Unimplemented
41 }
42 }
43
36 impl From<HgError> for CommandError {
44 impl From<HgError> for CommandError {
37 fn from(error: HgError) -> Self {
45 fn from(error: HgError) -> Self {
38 match error {
46 match error {
@@ -33,7 +33,7 b" fn add_global_args<'a, 'b>(app: App<'a, "
33 )
33 )
34 }
34 }
35
35
36 fn main() {
36 fn main_with_result(ui: &ui::Ui) -> Result<(), CommandError> {
37 env_logger::init();
37 env_logger::init();
38 let app = App::new("rhg")
38 let app = App::new("rhg")
39 .setting(AppSettings::AllowInvalidUtf8)
39 .setting(AppSettings::AllowInvalidUtf8)
@@ -43,12 +43,7 b' fn main() {'
43 let app = add_global_args(app);
43 let app = add_global_args(app);
44 let app = add_subcommand_args(app);
44 let app = add_subcommand_args(app);
45
45
46 let ui = ui::Ui::new();
46 let matches = app.clone().get_matches_safe()?;
47
48 let matches = app.clone().get_matches_safe().unwrap_or_else(|err| {
49 let _ = ui.writeln_stderr_str(&err.message);
50 std::process::exit(exitcode::UNIMPLEMENTED)
51 });
52
47
53 let (subcommand_name, subcommand_matches) = matches.subcommand();
48 let (subcommand_name, subcommand_matches) = matches.subcommand();
54 let run = subcommand_run_fn(subcommand_name)
49 let run = subcommand_run_fn(subcommand_name)
@@ -69,16 +64,18 b' fn main() {'
69 };
64 };
70
65
71 let repo_path = value_of_global_arg("repository").map(Path::new);
66 let repo_path = value_of_global_arg("repository").map(Path::new);
72 let result = (|| -> Result<(), CommandError> {
67 let config_args = values_of_global_arg("config")
73 let config_args = values_of_global_arg("config")
68 // `get_bytes_from_path` works for OsStr the same as for Path
74 // `get_bytes_from_path` works for OsStr the same as for Path
69 .map(hg::utils::files::get_bytes_from_path);
75 .map(hg::utils::files::get_bytes_from_path);
70 let config = hg::config::Config::load(config_args)?;
76 let config = hg::config::Config::load(config_args)?;
71 run(&ui, &config, repo_path, args)
77 run(&ui, &config, repo_path, args)
72 }
78 })();
79
73
80 let exit_code = match result {
74 fn main() {
81 Ok(_) => exitcode::OK,
75 let ui = ui::Ui::new();
76
77 let exit_code = match main_with_result(&ui) {
78 Ok(()) => exitcode::OK,
82
79
83 // Exit with a specific code and no error message to let a potential
80 // Exit with a specific code and no error message to let a potential
84 // wrapper script fallback to Python-based Mercurial.
81 // wrapper script fallback to Python-based Mercurial.
@@ -49,11 +49,6 b' impl Ui {'
49
49
50 stderr.flush().or_else(handle_stderr_error)
50 stderr.flush().or_else(handle_stderr_error)
51 }
51 }
52
53 /// Write string line to stderr
54 pub fn writeln_stderr_str(&self, s: &str) -> Result<(), UiError> {
55 self.write_stderr(&format!("{}\n", s).as_bytes())
56 }
57 }
52 }
58
53
59 /// A buffered stdout writer for faster batch printing operations.
54 /// A buffered stdout writer for faster batch printing operations.
@@ -12,12 +12,6 b' Define an rhg function that will only ru'
12
12
13 Unimplemented command
13 Unimplemented command
14 $ rhg unimplemented-command
14 $ rhg unimplemented-command
15 error: Found argument 'unimplemented-command' which wasn't expected, or isn't valid in this context
16
17 USAGE:
18 rhg [OPTIONS] <SUBCOMMAND>
19
20 For more information try --help
21 [252]
15 [252]
22
16
23 Finding root
17 Finding root
General Comments 0
You need to be logged in to leave comments. Login now