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