rust/rhg/src/error.rs
changeset 46484 a6e4e4650bac
parent 46446 1dcd9c9975ed
child 46486 d7685105e504
--- a/rust/rhg/src/error.rs	Thu Feb 04 13:16:21 2021 +0100
+++ b/rust/rhg/src/error.rs	Thu Feb 04 13:17:55 2021 +0100
@@ -1,6 +1,7 @@
 use crate::ui::utf8_to_local;
 use crate::ui::UiError;
 use format_bytes::format_bytes;
+use hg::config::{ConfigError, ConfigParseError};
 use hg::errors::HgError;
 use hg::repo::RepoFindError;
 use hg::revlog::revlog::RevlogError;
@@ -66,6 +67,36 @@
     }
 }
 
+impl From<ConfigError> for CommandError {
+    fn from(error: ConfigError) -> Self {
+        match error {
+            ConfigError::Parse(ConfigParseError {
+                origin,
+                line,
+                bytes,
+            }) => {
+                let line_message = if let Some(line_number) = line {
+                    format_bytes!(
+                        b" at line {}",
+                        line_number.to_string().into_bytes()
+                    )
+                } else {
+                    Vec::new()
+                };
+                CommandError::Abort {
+                    message: format_bytes!(
+                        b"config parse error in {}{}: '{}'",
+                        origin.to_bytes(),
+                        line_message,
+                        bytes
+                    ),
+                }
+            }
+            ConfigError::Other(error) => error.into(),
+        }
+    }
+}
+
 impl From<(RevlogError, &str)> for CommandError {
     fn from((err, rev): (RevlogError, &str)) -> CommandError {
         match err {