annotate rust/rhg/src/error.rs @ 52302:f33b87b46135

rust-lib: move `PatternError` to the `filepatterns` module This is where it belongs
author Rapha?l Gom?s <rgomes@octobus.net>
date Mon, 04 Nov 2024 11:21:43 +0100
parents 79e8118cd846
children 393ad2685fb4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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};
52298
db065b33fa56 rust-dirstate: merge `dirstate_tree` module into `dirstate`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52041
diff changeset
6 use hg::dirstate::on_disk::DirstateV2ParseError;
52300
04b9a56c2d25 rust-lib: only export very common types to the top of the crate
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52298
diff changeset
7 use hg::dirstate::status::StatusError;
52301
79e8118cd846 rust-lib: move `Dirstate*Error` to the `dirstate` module
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52300
diff changeset
8 use hg::dirstate::DirstateError;
79e8118cd846 rust-lib: move `Dirstate*Error` to the `dirstate` module
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52300
diff changeset
9 use hg::dirstate::DirstateMapError;
46446
1dcd9c9975ed rust: Fold find_root and check_requirements into Repo::find
Simon Sapin <simon.sapin@octobus.net>
parents: 46445
diff changeset
10 use hg::errors::HgError;
47407
6e49769b7f97 rhg: add exit code to HgError::Abort()
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46821
diff changeset
11 use hg::exit_codes;
52302
f33b87b46135 rust-lib: move `PatternError` to the `filepatterns` module
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52301
diff changeset
12 use hg::filepatterns::PatternError;
46486
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
13 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
14 use hg::revlog::RevlogError;
49485
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
15 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
16 use hg::utils::files::get_bytes_from_path;
50863
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
17 use hg::utils::hg_path::HgPathError;
45049
513b3ef277a3 rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 44982
diff changeset
18 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
19
513b3ef277a3 rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 44982
diff changeset
20 /// The kind of command error
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
21 #[derive(Debug)]
46434
3e2d539d0d1a rust: remove `FooError` structs with only `kind: FooErrorKind` enum field
Simon Sapin <simon.sapin@octobus.net>
parents: 45984
diff changeset
22 pub enum CommandError {
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
23 /// 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
24 Abort {
821929d59e01 rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46797
diff changeset
25 message: Vec<u8>,
47407
6e49769b7f97 rhg: add exit code to HgError::Abort()
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46821
diff changeset
26 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
27 hint: Option<Vec<u8>>,
46820
821929d59e01 rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46797
diff changeset
28 },
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
29
46744
b1f2c2b336ec rhg: `cat` command: print error messages for missing files
Simon Sapin <simon.sapin@octobus.net>
parents: 46735
diff changeset
30 /// 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
31 Unsuccessful,
b1f2c2b336ec rhg: `cat` command: print error messages for missing files
Simon Sapin <simon.sapin@octobus.net>
parents: 46735
diff changeset
32
46666
33f2d56acc73 rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents: 46593
diff changeset
33 /// 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
34 /// 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
35 /// `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
36 /// 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
37 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
38 /// 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
39 /// 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
40 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
41 }
513b3ef277a3 rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 44982
diff changeset
42
46434
3e2d539d0d1a rust: remove `FooError` structs with only `kind: FooErrorKind` enum field
Simon Sapin <simon.sapin@octobus.net>
parents: 45984
diff changeset
43 impl CommandError {
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
44 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
45 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
46 }
821929d59e01 rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46797
diff changeset
47
821929d59e01 rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46797
diff changeset
48 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
49 message: impl AsRef<str>,
47407
6e49769b7f97 rhg: add exit code to HgError::Abort()
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46821
diff changeset
50 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
51 ) -> Self {
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
52 CommandError::Abort {
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
53 // 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
54 // 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
55 // 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
56 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
57 detailed_exit_code,
49488
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
58 hint: None,
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
59 }
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
60 }
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
61
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
62 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
63 message: impl AsRef<str>,
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
64 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
65 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
66 ) -> Self {
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
67 CommandError::Abort {
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
68 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
69 detailed_exit_code,
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
70 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
71 }
513b3ef277a3 rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 44982
diff changeset
72 }
46666
33f2d56acc73 rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents: 46593
diff changeset
73
49485
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
74 pub fn abort_with_exit_code_bytes(
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
75 message: impl AsRef<[u8]>,
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
76 detailed_exit_code: exit_codes::ExitCode,
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
77 ) -> Self {
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
78 // 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
79 // version.
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
80 CommandError::Abort {
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
81 message: message.as_ref().into(),
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
82 detailed_exit_code,
49488
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
83 hint: None,
49485
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
84 }
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
85 }
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
86
46666
33f2d56acc73 rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents: 46593
diff changeset
87 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
88 CommandError::UnsupportedFeature {
33f2d56acc73 rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents: 46593
diff changeset
89 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
90 }
33f2d56acc73 rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents: 46593
diff changeset
91 }
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
92 }
45361
47997afadf08 rhg: ask the error message from `CommandError`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 45360
diff changeset
93
46591
21d3b40b4c0e rhg: Remove error message on unsupported CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents: 46503
diff changeset
94 /// 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
95 /// 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
96 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
97 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
98 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
99 }
21d3b40b4c0e rhg: Remove error message on unsupported CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents: 46503
diff changeset
100 }
21d3b40b4c0e rhg: Remove error message on unsupported CLI arguments
Simon Sapin <simon.sapin@octobus.net>
parents: 46503
diff changeset
101
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
102 impl From<HgError> for CommandError {
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
103 fn from(error: HgError) -> Self {
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
104 match error {
46666
33f2d56acc73 rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents: 46593
diff changeset
105 HgError::UnsupportedFeature(message) => {
33f2d56acc73 rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents: 46593
diff changeset
106 CommandError::unsupported(message)
33f2d56acc73 rhg: Add a `rhg.on-unsupported` configuration key
Simon Sapin <simon.sapin@octobus.net>
parents: 46593
diff changeset
107 }
49174
3f86ee422095 censor: make rhg fall back to python when encountering a censored node
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 49149
diff changeset
108 HgError::CensoredNodeError => {
3f86ee422095 censor: make rhg fall back to python when encountering a censored node
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 49149
diff changeset
109 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
110 }
47408
7954ee2d7cf7 rhg: propogate error coming from HgError::Abort to CommandError
Pulkit Goyal <7895pulkit@gmail.com>
parents: 47407
diff changeset
111 HgError::Abort {
7954ee2d7cf7 rhg: propogate error coming from HgError::Abort to CommandError
Pulkit Goyal <7895pulkit@gmail.com>
parents: 47407
diff changeset
112 message,
7954ee2d7cf7 rhg: propogate error coming from HgError::Abort to CommandError
Pulkit Goyal <7895pulkit@gmail.com>
parents: 47407
diff changeset
113 detailed_exit_code,
49488
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
114 hint,
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
115 } => 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
116 message,
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
117 detailed_exit_code,
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
118 hint,
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
119 ),
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
120 _ => CommandError::abort(error.to_string()),
45361
47997afadf08 rhg: ask the error message from `CommandError`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 45360
diff changeset
121 }
47997afadf08 rhg: ask the error message from `CommandError`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 45360
diff changeset
122 }
45049
513b3ef277a3 rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 44982
diff changeset
123 }
513b3ef277a3 rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 44982
diff changeset
124
46797
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
125 impl From<ConfigValueParseError> for CommandError {
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
126 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
127 CommandError::abort_with_exit_code(
821929d59e01 rhg: add support for detailed exit code for ConfigParseError
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46797
diff changeset
128 error.to_string(),
47407
6e49769b7f97 rhg: add exit code to HgError::Abort()
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46821
diff changeset
129 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
130 )
46797
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
131 }
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
132 }
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
133
45049
513b3ef277a3 rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 44982
diff changeset
134 impl From<UiError> for CommandError {
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
135 fn from(_error: UiError) -> Self {
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
136 // 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
137 // 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
138 // too.
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
139 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
140 }
513b3ef277a3 rhg: add RootCommand using hg-core FindRoot operation to prepare `hg root`
Antoine Cezar <antoine.cezar@octobus.net>
parents: 44982
diff changeset
141 }
45363
5dbf875b3275 rhg: simplify `FindRootError` handling
Antoine Cezar <antoine.cezar@octobus.net>
parents: 45361
diff changeset
142
46486
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
143 impl From<RepoError> for CommandError {
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
144 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
145 match error {
49488
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
146 RepoError::NotFound { at } => {
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
147 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
148 format_bytes!(
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
149 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
150 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
151 ),
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
152 exit_codes::ABORT,
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
153 )
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
154 }
46486
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
155 RepoError::ConfigParseError(error) => error.into(),
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
156 RepoError::Other(error) => error.into(),
45363
5dbf875b3275 rhg: simplify `FindRootError` handling
Antoine Cezar <antoine.cezar@octobus.net>
parents: 45361
diff changeset
157 }
5dbf875b3275 rhg: simplify `FindRootError` handling
Antoine Cezar <antoine.cezar@octobus.net>
parents: 45361
diff changeset
158 }
5dbf875b3275 rhg: simplify `FindRootError` handling
Antoine Cezar <antoine.cezar@octobus.net>
parents: 45361
diff changeset
159 }
46436
252d1bdba33d rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents: 46435
diff changeset
160
46593
5ce2aa7c2ad5 rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents: 46591
diff changeset
161 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
162 fn from(error: &'a NoRepoInCwdError) -> Self {
5ce2aa7c2ad5 rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents: 46591
diff changeset
163 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
164 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
165 format_bytes!(
46731
3d692e724d06 rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents: 46666
diff changeset
166 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
167 get_bytes_from_path(cwd)
5ce2aa7c2ad5 rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents: 46591
diff changeset
168 ),
49488
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
169 exit_codes::ABORT,
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
170 )
46593
5ce2aa7c2ad5 rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents: 46591
diff changeset
171 }
5ce2aa7c2ad5 rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents: 46591
diff changeset
172 }
5ce2aa7c2ad5 rhg: Move `Repo` object creation into `main()`
Simon Sapin <simon.sapin@octobus.net>
parents: 46591
diff changeset
173
46484
a6e4e4650bac rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents: 46446
diff changeset
174 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
175 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
176 match error {
46486
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
177 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
178 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
179 }
a6e4e4650bac rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents: 46446
diff changeset
180 }
a6e4e4650bac rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents: 46446
diff changeset
181 }
a6e4e4650bac rhg: Parse system and user configuration at program start
Simon Sapin <simon.sapin@octobus.net>
parents: 46446
diff changeset
182
46486
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
183 impl From<ConfigParseError> for CommandError {
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
184 fn from(error: ConfigParseError) -> Self {
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
185 let ConfigParseError {
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
186 origin,
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
187 line,
46731
3d692e724d06 rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents: 46666
diff changeset
188 message,
46486
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
189 } = error;
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
190 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
191 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
192 } else {
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
193 Vec::new()
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
194 };
49488
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
195 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
196 format_bytes!(
46731
3d692e724d06 rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents: 46666
diff changeset
197 b"config error at {}{}: {}",
46499
eace48b4a786 rust: Use the DisplayBytes trait in config printing
Simon Sapin <simon.sapin@octobus.net>
parents: 46486
diff changeset
198 origin,
46486
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
199 line_message,
46731
3d692e724d06 rhg: Align config file parse error formatting with Python
Simon Sapin <simon.sapin@octobus.net>
parents: 46666
diff changeset
200 message
46486
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
201 ),
49488
9f14126cfc4c rust: add support for hints in error messages
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49485
diff changeset
202 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
203 )
46486
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
204 }
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
205 }
d7685105e504 rhg: Parse per-repository configuration
Simon Sapin <simon.sapin@octobus.net>
parents: 46484
diff changeset
206
46437
b274aa2f20fd rust: remove three enums that were identical to `RevlogError`
Simon Sapin <simon.sapin@octobus.net>
parents: 46436
diff changeset
207 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
208 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
209 match err {
46821
e8ae91b1a63d rhg: raise wdir specific error for `hg debugdata`
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46820
diff changeset
210 RevlogError::WDirUnsupported => CommandError::abort(
e8ae91b1a63d rhg: raise wdir specific error for `hg debugdata`
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46820
diff changeset
211 "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
212 ),
52041
652149ed64f0 rust: improve `InvalidRevision` error message
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50863
diff changeset
213 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
214 "abort: invalid revision identifier: {}",
52041
652149ed64f0 rust: improve `InvalidRevision` error message
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50863
diff changeset
215 r
46436
252d1bdba33d rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents: 46435
diff changeset
216 )),
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
217 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
218 "abort: ambiguous revision identifier: {}",
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
219 rev
46436
252d1bdba33d rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents: 46435
diff changeset
220 )),
46445
ca3f73cc3cf4 rhg: Simplify CommandError based on its use
Simon Sapin <simon.sapin@octobus.net>
parents: 46443
diff changeset
221 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
222 }
252d1bdba33d rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents: 46435
diff changeset
223 }
252d1bdba33d rhg: replace `map_*_error` functions with `From` impls
Simon Sapin <simon.sapin@octobus.net>
parents: 46435
diff changeset
224 }
46797
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
225
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
226 impl From<StatusError> for CommandError {
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
227 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
228 match error {
8076298b795a rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 49489
diff changeset
229 StatusError::Pattern(_) => {
8076298b795a rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 49489
diff changeset
230 CommandError::unsupported(format!("{}", error))
8076298b795a rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 49489
diff changeset
231 }
8076298b795a rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 49489
diff changeset
232 _ => CommandError::abort(format!("{}", error)),
8076298b795a rhg: fallback to slow path on invalid patterns in hgignore
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents: 49489
diff changeset
233 }
46797
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
234 }
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
235 }
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
236
50863
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
237 impl From<HgPathError> for CommandError {
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
238 fn from(error: HgPathError) -> Self {
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
239 CommandError::unsupported(format!("{}", error))
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
240 }
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
241 }
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
242
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
243 impl From<PatternError> for CommandError {
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
244 fn from(error: PatternError) -> Self {
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
245 CommandError::unsupported(format!("{}", error))
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
246 }
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
247 }
c112cc9effdc rhg: support "status FILE"
Spencer Baugh <sbaugh@janestreet.com>
parents: 49937
diff changeset
248
46797
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
249 impl From<DirstateMapError> for CommandError {
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
250 fn from(error: DirstateMapError) -> Self {
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
251 CommandError::abort(format!("{}", error))
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
252 }
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
253 }
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
254
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
255 impl From<DirstateError> for CommandError {
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
256 fn from(error: DirstateError) -> Self {
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
257 match error {
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
258 DirstateError::Common(error) => error.into(),
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
259 DirstateError::Map(error) => error.into(),
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
260 }
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
261 }
bcdcb4423ae3 rhg: Add more conversions between error types
Simon Sapin <simon.sapin@octobus.net>
parents: 46744
diff changeset
262 }
47674
ff97e793ed36 dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents: 47408
diff changeset
263
ff97e793ed36 dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents: 47408
diff changeset
264 impl From<DirstateV2ParseError> for CommandError {
ff97e793ed36 dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents: 47408
diff changeset
265 fn from(error: DirstateV2ParseError) -> Self {
ff97e793ed36 dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents: 47408
diff changeset
266 HgError::from(error).into()
ff97e793ed36 dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents: 47408
diff changeset
267 }
ff97e793ed36 dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents: 47408
diff changeset
268 }
49485
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
269
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
270 impl From<SparseConfigError> for CommandError {
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
271 fn from(e: SparseConfigError) -> Self {
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
272 match e {
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
273 SparseConfigError::IncludesAfterExcludes { context } => {
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
274 Self::abort_with_exit_code_bytes(
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
275 format_bytes!(
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
276 b"{} config cannot have includes after excludes",
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
277 context
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 exit_codes::CONFIG_PARSE_ERROR_ABORT,
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
280 )
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
281 }
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
282 SparseConfigError::EntryOutsideSection { context, line } => {
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
283 Self::abort_with_exit_code_bytes(
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
284 format_bytes!(
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
285 b"{} config entry outside of section: {}",
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
286 context,
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
287 &line,
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
288 ),
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
289 exit_codes::CONFIG_PARSE_ERROR_ABORT,
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
290 )
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
291 }
49489
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49488
diff changeset
292 SparseConfigError::InvalidNarrowPrefix(prefix) => {
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49488
diff changeset
293 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
294 format_bytes!(
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49488
diff changeset
295 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
296 &prefix
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 exit_codes::ABORT,
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49488
diff changeset
299 )
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49488
diff changeset
300 }
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49488
diff changeset
301 SparseConfigError::IncludesInNarrow => Self::abort(
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49488
diff changeset
302 "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
303 is not supported in narrowspec",
7c93e38a0bbd rhg-status: add support for narrow clones
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49488
diff changeset
304 ),
49485
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
305 SparseConfigError::HgError(e) => Self::from(e),
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
306 SparseConfigError::PatternError(e) => {
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
307 Self::unsupported(format!("{}", e))
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
308 }
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
309 }
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
310 }
ffd4b1f1c9cb rhg: add sparse support
Rapha?l Gom?s <rgomes@octobus.net>
parents: 49174
diff changeset
311 }