Show More
@@ -0,0 +1,26 b'' | |||
|
1 | #require rust | |
|
2 | ||
|
3 | $ rhg() { | |
|
4 | > if [ -f "$RUNTESTDIR/../rust/target/debug/rhg" ]; then | |
|
5 | > "$RUNTESTDIR/../rust/target/debug/rhg" "$@" | |
|
6 | > else | |
|
7 | > echo "skipped: Cannot find rhg. Try to run cargo build in rust/rhg." | |
|
8 | > exit 80 | |
|
9 | > fi | |
|
10 | > } | |
|
11 | $ rhg unimplemented-command | |
|
12 | [252] | |
|
13 | $ rhg root | |
|
14 | abort: no repository found in '$TESTTMP' (.hg not found)! | |
|
15 | [255] | |
|
16 | $ hg init repository | |
|
17 | $ cd repository | |
|
18 | $ rhg root | |
|
19 | $TESTTMP/repository | |
|
20 | $ rhg root > /dev/full | |
|
21 | abort: No space left on device (os error 28) | |
|
22 | [255] | |
|
23 | $ rm -rf `pwd` | |
|
24 | $ rhg root | |
|
25 | abort: error getting current working directory: $ENOENT$ | |
|
26 | [255] |
@@ -58,7 +58,7 b' dependencies = [' | |||
|
58 | 58 | |
|
59 | 59 | [[package]] |
|
60 | 60 | name = "clap" |
|
61 |
version = "2.33. |
|
|
61 | version = "2.33.1" | |
|
62 | 62 | source = "registry+https://github.com/rust-lang/crates.io-index" |
|
63 | 63 | dependencies = [ |
|
64 | 64 | "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", |
@@ -203,7 +203,7 b' name = "hg-core"' | |||
|
203 | 203 | version = "0.1.0" |
|
204 | 204 | dependencies = [ |
|
205 | 205 | "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", |
|
206 |
"clap 2.33. |
|
|
206 | "clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)", | |
|
207 | 207 | "crossbeam 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)", |
|
208 | 208 | "hex 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", |
|
209 | 209 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", |
@@ -490,6 +490,7 b' dependencies = [' | |||
|
490 | 490 | name = "rhg" |
|
491 | 491 | version = "0.1.0" |
|
492 | 492 | dependencies = [ |
|
493 | "clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)", | |
|
493 | 494 | "hg-core 0.1.0", |
|
494 | 495 | ] |
|
495 | 496 | |
@@ -657,7 +658,7 b' source = "registry+https://github.com/ru' | |||
|
657 | 658 | "checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" |
|
658 | 659 | "checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" |
|
659 | 660 | "checksum chrono 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "80094f509cf8b5ae86a4966a39b3ff66cd7e2a3e594accec3743ff3fabeab5b2" |
|
660 |
"checksum clap 2.33. |
|
|
661 | "checksum clap 2.33.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129" | |
|
661 | 662 | "checksum colored 1.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "f4ffc801dacf156c5854b9df4f425a626539c3a6ef7893cc0c5084a23f0b6c59" |
|
662 | 663 | "checksum cpython 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bfaf3847ab963e40c4f6dd8d6be279bdf74007ae2413786a0dcbb28c52139a95" |
|
663 | 664 | "checksum crossbeam 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "69323bff1fb41c635347b8ead484a5ca6c3f11914d784170b158d8449ab07f8e" |
@@ -6,4 +6,5 b' edition = "2018"' | |||
|
6 | 6 | |
|
7 | 7 | [dependencies] |
|
8 | 8 | hg-core = { path = "../hg-core"} |
|
9 | clap = "2.33.1" | |
|
9 | 10 |
@@ -1,8 +1,42 b'' | |||
|
1 | use clap::App; | |
|
2 | use clap::AppSettings; | |
|
3 | use clap::SubCommand; | |
|
4 | ||
|
1 | 5 | mod commands; |
|
2 | 6 | mod error; |
|
3 | 7 | mod exitcode; |
|
4 | 8 | mod ui; |
|
9 | use commands::Command; | |
|
5 | 10 | |
|
6 | 11 | fn main() { |
|
7 | std::process::exit(exitcode::UNIMPLEMENTED_COMMAND) | |
|
12 | let mut app = App::new("rhg") | |
|
13 | .setting(AppSettings::AllowInvalidUtf8) | |
|
14 | .setting(AppSettings::SubcommandRequired) | |
|
15 | .setting(AppSettings::VersionlessSubcommands) | |
|
16 | .version("0.0.1") | |
|
17 | .subcommand( | |
|
18 | SubCommand::with_name("root").about(commands::root::HELP_TEXT), | |
|
19 | ); | |
|
20 | ||
|
21 | let matches = app.clone().get_matches_safe().unwrap_or_else(|_| { | |
|
22 | std::process::exit(exitcode::UNIMPLEMENTED_COMMAND) | |
|
23 | }); | |
|
24 | ||
|
25 | let command_result = match matches.subcommand_name() { | |
|
26 | Some(name) => match name { | |
|
27 | "root" => commands::root::RootCommand::new().run(), | |
|
28 | _ => std::process::exit(exitcode::UNIMPLEMENTED_COMMAND), | |
|
29 | }, | |
|
30 | _ => { | |
|
31 | match app.print_help() { | |
|
32 | Ok(_) => std::process::exit(exitcode::OK), | |
|
33 | Err(_) => std::process::exit(exitcode::ABORT), | |
|
34 | }; | |
|
35 | } | |
|
36 | }; | |
|
37 | ||
|
38 | match command_result { | |
|
39 | Ok(_) => std::process::exit(exitcode::OK), | |
|
40 | Err(e) => e.exit(), | |
|
41 | } | |
|
8 | 42 | } |
General Comments 0
You need to be logged in to leave comments.
Login now