annotate rust/rhg/src/error.rs @ 52278:51a350a22d0c

branching: merge stable into default
author Rapha?l Gom?s <rgomes@octobus.net>
date Wed, 20 Nov 2024 15:53:19 +0100
parents 652149ed64f0
children db065b33fa56 77b95a4abbb2
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};
47674
ff97e793ed36 dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents: 47408
diff changeset
6 use hg::dirstate_tree::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;
50863
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 ),
52041
652149ed64f0 rust: improve `InvalidRevision` error message
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50863
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: {}",
52041
652149ed64f0 rust: improve `InvalidRevision` error message
Rapha?l Gom?s <rgomes@octobus.net>
parents: 50863
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
50863
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 }