Mercurial > hg
annotate rust/rhg/src/error.rs @ 52302:db065b33fa56
rust-dirstate: merge `dirstate_tree` module into `dirstate`
The historical reasonning for `dirstate_tree` existing in the first place is
that a new approach was needed for the tree-like dirstate and it was easier
to start somewhat fresh. Now that the former dirstate is (long) gone, we
can merge those two modules to avoid the confusion that even the module
creators sometimes get.
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Mon, 04 Nov 2024 11:00:58 +0100 |
parents | 652149ed64f0 |
children | 04b9a56c2d25 |
rev | line source |
---|---|
46436
252d1bdba33d
rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents:
46435
diff
changeset
|
1 use crate::ui::utf8_to_local; |
45049
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
2 use crate::ui::UiError; |
46593
5ce2aa7c2ad5
rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents:
46591
diff
changeset
|
3 use crate::NoRepoInCwdError; |
46446
1dcd9c9975ed
rust: Fold find_root and check_requirements into Repo::find
Simon Sapin <simon.sapin@octobus.net>
parents:
46445
diff
changeset
|
4 use format_bytes::format_bytes; |
46797
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
5 use hg::config::{ConfigError, ConfigParseError, ConfigValueParseError}; |
52302
db065b33fa56
rust-dirstate: merge `dirstate_tree` module into `dirstate`
Raphaël Gomès <rgomes@octobus.net>
parents:
52045
diff
changeset
|
6 use hg::dirstate::on_disk::DirstateV2ParseError; |
46446
1dcd9c9975ed
rust: Fold find_root and check_requirements into Repo::find
Simon Sapin <simon.sapin@octobus.net>
parents:
46445
diff
changeset
|
7 use hg::errors::HgError; |
47407
6e49769b7f97
rhg: add exit code to HgError::Abort()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46821
diff
changeset
|
8 use hg::exit_codes; |
46486
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
9 use hg::repo::RepoError; |
49937
750409505286
rust-clippy: merge "revlog" module definition and struct implementation
Raphaël Gomès <rgomes@octobus.net>
parents:
49914
diff
changeset
|
10 use hg::revlog::RevlogError; |
49485
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
11 use hg::sparse::SparseConfigError; |
46446
1dcd9c9975ed
rust: Fold find_root and check_requirements into Repo::find
Simon Sapin <simon.sapin@octobus.net>
parents:
46445
diff
changeset
|
12 use hg::utils::files::get_bytes_from_path; |
50866
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
13 use hg::utils::hg_path::HgPathError; |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
14 use hg::{DirstateError, DirstateMapError, PatternError, StatusError}; |
45049
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
15 use std::convert::From; |
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
16 |
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
17 /// The kind of command error |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
18 #[derive(Debug)] |
46434
3e2d539d0d1a
rust: remove `FooError` structs with only `kind: FooErrorKind` enum field
Simon Sapin <simon.sapin@octobus.net>
parents:
45984
diff
changeset
|
19 pub enum CommandError { |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
20 /// Exit with an error message and "standard" failure exit code. |
46820
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
21 Abort { |
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
22 message: Vec<u8>, |
47407
6e49769b7f97
rhg: add exit code to HgError::Abort()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46821
diff
changeset
|
23 detailed_exit_code: exit_codes::ExitCode, |
49488
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
24 hint: Option<Vec<u8>>, |
46820
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
25 }, |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
26 |
46744
b1f2c2b336ec
rhg: `cat` command: print error messages for missing files
Simon Sapin <simon.sapin@octobus.net>
parents:
46735
diff
changeset
|
27 /// Exit with a failure exit code but no message. |
b1f2c2b336ec
rhg: `cat` command: print error messages for missing files
Simon Sapin <simon.sapin@octobus.net>
parents:
46735
diff
changeset
|
28 Unsuccessful, |
b1f2c2b336ec
rhg: `cat` command: print error messages for missing files
Simon Sapin <simon.sapin@octobus.net>
parents:
46735
diff
changeset
|
29 |
46666
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
30 /// Encountered something (such as a CLI argument, repository layout, …) |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
31 /// not supported by this version of `rhg`. Depending on configuration |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
32 /// `rhg` may attempt to silently fall back to Python-based `hg`, which |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
33 /// may or may not support this feature. |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
34 UnsupportedFeature { message: Vec<u8> }, |
49149
006688e36e12
rhg: use `Command::exec` instead of `Command::status`
Raphaël Gomès <rgomes@octobus.net>
parents:
47674
diff
changeset
|
35 /// The fallback executable does not exist (or has some other problem if |
006688e36e12
rhg: use `Command::exec` instead of `Command::status`
Raphaël Gomès <rgomes@octobus.net>
parents:
47674
diff
changeset
|
36 /// we end up being more precise about broken fallbacks). |
006688e36e12
rhg: use `Command::exec` instead of `Command::status`
Raphaël Gomès <rgomes@octobus.net>
parents:
47674
diff
changeset
|
37 InvalidFallback { path: Vec<u8>, err: String }, |
45049
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
38 } |
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
39 |
46434
3e2d539d0d1a
rust: remove `FooError` structs with only `kind: FooErrorKind` enum field
Simon Sapin <simon.sapin@octobus.net>
parents:
45984
diff
changeset
|
40 impl CommandError { |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
41 pub fn abort(message: impl AsRef<str>) -> Self { |
47407
6e49769b7f97
rhg: add exit code to HgError::Abort()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46821
diff
changeset
|
42 CommandError::abort_with_exit_code(message, exit_codes::ABORT) |
46820
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
43 } |
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
44 |
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
45 pub fn abort_with_exit_code( |
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
46 message: impl AsRef<str>, |
47407
6e49769b7f97
rhg: add exit code to HgError::Abort()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46821
diff
changeset
|
47 detailed_exit_code: exit_codes::ExitCode, |
46820
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
48 ) -> Self { |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
49 CommandError::Abort { |
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
50 // TODO: bytes-based (instead of Unicode-based) formatting |
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
51 // of error messages to handle non-UTF-8 filenames etc: |
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
52 // https://www.mercurial-scm.org/wiki/EncodingStrategy#Mixing_output |
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
53 message: utf8_to_local(message.as_ref()).into(), |
49914
58074252db3c
rust: run `cargo clippy`
Raphaël Gomès <rgomes@octobus.net>
parents:
49539
diff
changeset
|
54 detailed_exit_code, |
49488
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
55 hint: None, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
56 } |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
57 } |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
58 |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
59 pub fn abort_with_exit_code_and_hint( |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
60 message: impl AsRef<str>, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
61 detailed_exit_code: exit_codes::ExitCode, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
62 hint: Option<impl AsRef<str>>, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
63 ) -> Self { |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
64 CommandError::Abort { |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
65 message: utf8_to_local(message.as_ref()).into(), |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
66 detailed_exit_code, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
67 hint: hint.map(|h| utf8_to_local(h.as_ref()).into()), |
45049
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
68 } |
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
69 } |
46666
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
70 |
49485
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
71 pub fn abort_with_exit_code_bytes( |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
72 message: impl AsRef<[u8]>, |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
73 detailed_exit_code: exit_codes::ExitCode, |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
74 ) -> Self { |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
75 // TODO: use this everywhere it makes sense instead of the string |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
76 // version. |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
77 CommandError::Abort { |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
78 message: message.as_ref().into(), |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
79 detailed_exit_code, |
49488
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
80 hint: None, |
49485
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
81 } |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
82 } |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
83 |
46666
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
84 pub fn unsupported(message: impl AsRef<str>) -> Self { |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
85 CommandError::UnsupportedFeature { |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
86 message: utf8_to_local(message.as_ref()).into(), |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
87 } |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
88 } |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
89 } |
45361
47997afadf08
rhg: ask the error message from `CommandError`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
45360
diff
changeset
|
90 |
46591
21d3b40b4c0e
rhg: Remove error message on unsupported CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents:
46503
diff
changeset
|
91 /// For now we don’t differenciate between invalid CLI args and valid for `hg` |
21d3b40b4c0e
rhg: Remove error message on unsupported CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents:
46503
diff
changeset
|
92 /// but not supported yet by `rhg`. |
21d3b40b4c0e
rhg: Remove error message on unsupported CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents:
46503
diff
changeset
|
93 impl From<clap::Error> for CommandError { |
46666
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
94 fn from(error: clap::Error) -> Self { |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
95 CommandError::unsupported(error.to_string()) |
46591
21d3b40b4c0e
rhg: Remove error message on unsupported CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents:
46503
diff
changeset
|
96 } |
21d3b40b4c0e
rhg: Remove error message on unsupported CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents:
46503
diff
changeset
|
97 } |
21d3b40b4c0e
rhg: Remove error message on unsupported CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents:
46503
diff
changeset
|
98 |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
99 impl From<HgError> for CommandError { |
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
100 fn from(error: HgError) -> Self { |
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
101 match error { |
46666
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
102 HgError::UnsupportedFeature(message) => { |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
103 CommandError::unsupported(message) |
33f2d56acc73
rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents:
46593
diff
changeset
|
104 } |
49174
3f86ee422095
censor: make rhg fall back to python when encountering a censored node
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49149
diff
changeset
|
105 HgError::CensoredNodeError => { |
3f86ee422095
censor: make rhg fall back to python when encountering a censored node
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49149
diff
changeset
|
106 CommandError::unsupported("Encountered a censored node") |
3f86ee422095
censor: make rhg fall back to python when encountering a censored node
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49149
diff
changeset
|
107 } |
47408
7954ee2d7cf7
rhg: propogate error coming from HgError::Abort to CommandError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
47407
diff
changeset
|
108 HgError::Abort { |
7954ee2d7cf7
rhg: propogate error coming from HgError::Abort to CommandError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
47407
diff
changeset
|
109 message, |
7954ee2d7cf7
rhg: propogate error coming from HgError::Abort to CommandError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
47407
diff
changeset
|
110 detailed_exit_code, |
49488
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
111 hint, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
112 } => CommandError::abort_with_exit_code_and_hint( |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
113 message, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
114 detailed_exit_code, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
115 hint, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
116 ), |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
117 _ => CommandError::abort(error.to_string()), |
45361
47997afadf08
rhg: ask the error message from `CommandError`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
45360
diff
changeset
|
118 } |
47997afadf08
rhg: ask the error message from `CommandError`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
45360
diff
changeset
|
119 } |
45049
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
120 } |
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
121 |
46797
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
122 impl From<ConfigValueParseError> for CommandError { |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
123 fn from(error: ConfigValueParseError) -> Self { |
46820
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
124 CommandError::abort_with_exit_code( |
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
125 error.to_string(), |
47407
6e49769b7f97
rhg: add exit code to HgError::Abort()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46821
diff
changeset
|
126 exit_codes::CONFIG_ERROR_ABORT, |
46820
821929d59e01
rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46797
diff
changeset
|
127 ) |
46797
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
128 } |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
129 } |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
130 |
45049
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
131 impl From<UiError> for CommandError { |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
132 fn from(_error: UiError) -> Self { |
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
133 // If we already failed writing to stdout or stderr, |
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
134 // writing an error message to stderr about it would be likely to fail |
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
135 // too. |
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
136 CommandError::abort("") |
45049
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
137 } |
513b3ef277a3
rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents:
44982
diff
changeset
|
138 } |
45363
5dbf875b3275
rhg: simplify `FindRootError` handling
Antoine Cezar <antoine.cezar@octobus.net>
parents:
45361
diff
changeset
|
139 |
46486
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
140 impl From<RepoError> for CommandError { |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
141 fn from(error: RepoError) -> Self { |
46446
1dcd9c9975ed
rust: Fold find_root and check_requirements into Repo::find
Simon Sapin <simon.sapin@octobus.net>
parents:
46445
diff
changeset
|
142 match error { |
49488
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
143 RepoError::NotFound { at } => { |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
144 CommandError::abort_with_exit_code_bytes( |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
145 format_bytes!( |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
146 b"abort: repository {} not found", |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
147 get_bytes_from_path(at) |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
148 ), |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
149 exit_codes::ABORT, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
150 ) |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
151 } |
46486
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
152 RepoError::ConfigParseError(error) => error.into(), |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
153 RepoError::Other(error) => error.into(), |
45363
5dbf875b3275
rhg: simplify `FindRootError` handling
Antoine Cezar <antoine.cezar@octobus.net>
parents:
45361
diff
changeset
|
154 } |
5dbf875b3275
rhg: simplify `FindRootError` handling
Antoine Cezar <antoine.cezar@octobus.net>
parents:
45361
diff
changeset
|
155 } |
5dbf875b3275
rhg: simplify `FindRootError` handling
Antoine Cezar <antoine.cezar@octobus.net>
parents:
45361
diff
changeset
|
156 } |
46436
252d1bdba33d
rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents:
46435
diff
changeset
|
157 |
46593
5ce2aa7c2ad5
rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents:
46591
diff
changeset
|
158 impl<'a> From<&'a NoRepoInCwdError> for CommandError { |
5ce2aa7c2ad5
rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents:
46591
diff
changeset
|
159 fn from(error: &'a NoRepoInCwdError) -> Self { |
5ce2aa7c2ad5
rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents:
46591
diff
changeset
|
160 let NoRepoInCwdError { cwd } = error; |
49488
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
161 CommandError::abort_with_exit_code_bytes( |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
162 format_bytes!( |
46731
3d692e724d06
rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents:
46666
diff
changeset
|
163 b"abort: no repository found in '{}' (.hg not found)!", |
46593
5ce2aa7c2ad5
rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents:
46591
diff
changeset
|
164 get_bytes_from_path(cwd) |
5ce2aa7c2ad5
rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents:
46591
diff
changeset
|
165 ), |
49488
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
166 exit_codes::ABORT, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
167 ) |
46593
5ce2aa7c2ad5
rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents:
46591
diff
changeset
|
168 } |
5ce2aa7c2ad5
rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents:
46591
diff
changeset
|
169 } |
5ce2aa7c2ad5
rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents:
46591
diff
changeset
|
170 |
46484
a6e4e4650bac
rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents:
46446
diff
changeset
|
171 impl From<ConfigError> for CommandError { |
a6e4e4650bac
rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents:
46446
diff
changeset
|
172 fn from(error: ConfigError) -> Self { |
a6e4e4650bac
rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents:
46446
diff
changeset
|
173 match error { |
46486
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
174 ConfigError::Parse(error) => error.into(), |
46484
a6e4e4650bac
rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents:
46446
diff
changeset
|
175 ConfigError::Other(error) => error.into(), |
a6e4e4650bac
rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents:
46446
diff
changeset
|
176 } |
a6e4e4650bac
rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents:
46446
diff
changeset
|
177 } |
a6e4e4650bac
rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents:
46446
diff
changeset
|
178 } |
a6e4e4650bac
rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents:
46446
diff
changeset
|
179 |
46486
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
180 impl From<ConfigParseError> for CommandError { |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
181 fn from(error: ConfigParseError) -> Self { |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
182 let ConfigParseError { |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
183 origin, |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
184 line, |
46731
3d692e724d06
rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents:
46666
diff
changeset
|
185 message, |
46486
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
186 } = error; |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
187 let line_message = if let Some(line_number) = line { |
46731
3d692e724d06
rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents:
46666
diff
changeset
|
188 format_bytes!(b":{}", line_number.to_string().into_bytes()) |
46486
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
189 } else { |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
190 Vec::new() |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
191 }; |
49488
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
192 CommandError::abort_with_exit_code_bytes( |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
193 format_bytes!( |
46731
3d692e724d06
rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents:
46666
diff
changeset
|
194 b"config error at {}{}: {}", |
46499
eace48b4a786
rust: Use the DisplayBytes trait in config printing
Simon Sapin <simon.sapin@octobus.net>
parents:
46486
diff
changeset
|
195 origin, |
46486
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
196 line_message, |
46731
3d692e724d06
rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents:
46666
diff
changeset
|
197 message |
46486
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
198 ), |
49488
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
199 exit_codes::CONFIG_ERROR_ABORT, |
9f14126cfc4c
rust: add support for hints in error messages
Raphaël Gomès <rgomes@octobus.net>
parents:
49485
diff
changeset
|
200 ) |
46486
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
201 } |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
202 } |
d7685105e504
rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents:
46484
diff
changeset
|
203 |
46437
b274aa2f20fd
rust: remove three enums that were identical to `RevlogError`
Simon Sapin <simon.sapin@octobus.net>
parents:
46436
diff
changeset
|
204 impl From<(RevlogError, &str)> for CommandError { |
b274aa2f20fd
rust: remove three enums that were identical to `RevlogError`
Simon Sapin <simon.sapin@octobus.net>
parents:
46436
diff
changeset
|
205 fn from((err, rev): (RevlogError, &str)) -> CommandError { |
46436
252d1bdba33d
rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents:
46435
diff
changeset
|
206 match err { |
46821
e8ae91b1a63d
rhg: raise wdir specific error for `hg debugdata`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46820
diff
changeset
|
207 RevlogError::WDirUnsupported => CommandError::abort( |
e8ae91b1a63d
rhg: raise wdir specific error for `hg debugdata`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46820
diff
changeset
|
208 "abort: working directory revision cannot be specified", |
e8ae91b1a63d
rhg: raise wdir specific error for `hg debugdata`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46820
diff
changeset
|
209 ), |
52045
652149ed64f0
rust: improve `InvalidRevision` error message
Raphaël Gomès <rgomes@octobus.net>
parents:
50866
diff
changeset
|
210 RevlogError::InvalidRevision(r) => CommandError::abort(format!( |
46731
3d692e724d06
rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents:
46666
diff
changeset
|
211 "abort: invalid revision identifier: {}", |
52045
652149ed64f0
rust: improve `InvalidRevision` error message
Raphaël Gomès <rgomes@octobus.net>
parents:
50866
diff
changeset
|
212 r |
46436
252d1bdba33d
rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents:
46435
diff
changeset
|
213 )), |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
214 RevlogError::AmbiguousPrefix => CommandError::abort(format!( |
46731
3d692e724d06
rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents:
46666
diff
changeset
|
215 "abort: ambiguous revision identifier: {}", |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
216 rev |
46436
252d1bdba33d
rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents:
46435
diff
changeset
|
217 )), |
46445
ca3f73cc3cf4
rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents:
46443
diff
changeset
|
218 RevlogError::Other(error) => error.into(), |
46436
252d1bdba33d
rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents:
46435
diff
changeset
|
219 } |
252d1bdba33d
rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents:
46435
diff
changeset
|
220 } |
252d1bdba33d
rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents:
46435
diff
changeset
|
221 } |
46797
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
222 |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
223 impl From<StatusError> for CommandError { |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
224 fn from(error: StatusError) -> Self { |
49539
8076298b795a
rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49489
diff
changeset
|
225 match error { |
8076298b795a
rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49489
diff
changeset
|
226 StatusError::Pattern(_) => { |
8076298b795a
rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49489
diff
changeset
|
227 CommandError::unsupported(format!("{}", error)) |
8076298b795a
rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49489
diff
changeset
|
228 } |
8076298b795a
rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49489
diff
changeset
|
229 _ => CommandError::abort(format!("{}", error)), |
8076298b795a
rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
49489
diff
changeset
|
230 } |
46797
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
231 } |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
232 } |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
233 |
50866
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
234 impl From<HgPathError> for CommandError { |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
235 fn from(error: HgPathError) -> Self { |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
236 CommandError::unsupported(format!("{}", error)) |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
237 } |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
238 } |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
239 |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
240 impl From<PatternError> for CommandError { |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
241 fn from(error: PatternError) -> Self { |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
242 CommandError::unsupported(format!("{}", error)) |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
243 } |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
244 } |
c112cc9effdc
rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents:
49937
diff
changeset
|
245 |
46797
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
246 impl From<DirstateMapError> for CommandError { |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
247 fn from(error: DirstateMapError) -> Self { |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
248 CommandError::abort(format!("{}", error)) |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
249 } |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
250 } |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
251 |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
252 impl From<DirstateError> for CommandError { |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
253 fn from(error: DirstateError) -> Self { |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
254 match error { |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
255 DirstateError::Common(error) => error.into(), |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
256 DirstateError::Map(error) => error.into(), |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
257 } |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
258 } |
bcdcb4423ae3
rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents:
46744
diff
changeset
|
259 } |
47674
ff97e793ed36
dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents:
47408
diff
changeset
|
260 |
ff97e793ed36
dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents:
47408
diff
changeset
|
261 impl From<DirstateV2ParseError> for CommandError { |
ff97e793ed36
dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents:
47408
diff
changeset
|
262 fn from(error: DirstateV2ParseError) -> Self { |
ff97e793ed36
dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents:
47408
diff
changeset
|
263 HgError::from(error).into() |
ff97e793ed36
dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents:
47408
diff
changeset
|
264 } |
ff97e793ed36
dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents:
47408
diff
changeset
|
265 } |
49485
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
266 |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
267 impl From<SparseConfigError> for CommandError { |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
268 fn from(e: SparseConfigError) -> Self { |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
269 match e { |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
270 SparseConfigError::IncludesAfterExcludes { context } => { |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
271 Self::abort_with_exit_code_bytes( |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
272 format_bytes!( |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
273 b"{} config cannot have includes after excludes", |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
274 context |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
275 ), |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
276 exit_codes::CONFIG_PARSE_ERROR_ABORT, |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
277 ) |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
278 } |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
279 SparseConfigError::EntryOutsideSection { context, line } => { |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
280 Self::abort_with_exit_code_bytes( |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
281 format_bytes!( |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
282 b"{} config entry outside of section: {}", |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
283 context, |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
284 &line, |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
285 ), |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
286 exit_codes::CONFIG_PARSE_ERROR_ABORT, |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
287 ) |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
288 } |
49489
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
289 SparseConfigError::InvalidNarrowPrefix(prefix) => { |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
290 Self::abort_with_exit_code_bytes( |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
291 format_bytes!( |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
292 b"invalid prefix on narrow pattern: {}", |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
293 &prefix |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
294 ), |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
295 exit_codes::ABORT, |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
296 ) |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
297 } |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
298 SparseConfigError::IncludesInNarrow => Self::abort( |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
299 "including other spec files using '%include' \ |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
300 is not supported in narrowspec", |
7c93e38a0bbd
rhg-status: add support for narrow clones
Raphaël Gomès <rgomes@octobus.net>
parents:
49488
diff
changeset
|
301 ), |
49485
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
302 SparseConfigError::HgError(e) => Self::from(e), |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
303 SparseConfigError::PatternError(e) => { |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
304 Self::unsupported(format!("{}", e)) |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
305 } |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
306 } |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
307 } |
ffd4b1f1c9cb
rhg: add sparse support
Raphaël Gomès <rgomes@octobus.net>
parents:
49174
diff
changeset
|
308 } |