Patchwork D8867: rhg: simply `FindRootError` handling

login
register
mail settings
Submitter phabricator
Date Aug. 3, 2020, 2:27 p.m.
Message ID <differential-rev-PHID-DREV-4xtfgjziik3hb3a6vb55-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/46964/
State Superseded
Headers show

Comments

phabricator - Aug. 3, 2020, 2:27 p.m.
acezar created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D8867

AFFECTED FILES
  rust/rhg/src/commands/root.rs
  rust/rhg/src/error.rs

CHANGE DETAILS




To: acezar, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/rust/rhg/src/error.rs b/rust/rhg/src/error.rs
--- a/rust/rhg/src/error.rs
+++ b/rust/rhg/src/error.rs
@@ -1,5 +1,6 @@ 
 use crate::exitcode;
 use crate::ui::UiError;
+use hg::operations::{FindRootError, FindRootErrorKind};
 use hg::utils::files::get_bytes_from_path;
 use std::convert::From;
 use std::path::PathBuf;
@@ -90,3 +91,16 @@ 
         }
     }
 }
+
+impl From<FindRootError> for CommandError {
+    fn from(err: FindRootError) -> Self {
+        match err.kind {
+            FindRootErrorKind::RootNotFound(path) => CommandError {
+                kind: CommandErrorKind::RootNotFound(path),
+            },
+            FindRootErrorKind::GetCurrentDirError(e) => CommandError {
+                kind: CommandErrorKind::CurrentDirNotFound(e),
+            },
+        }
+    }
+}
diff --git a/rust/rhg/src/commands/root.rs b/rust/rhg/src/commands/root.rs
--- a/rust/rhg/src/commands/root.rs
+++ b/rust/rhg/src/commands/root.rs
@@ -1,7 +1,7 @@ 
 use crate::commands::Command;
-use crate::error::{CommandError, CommandErrorKind};
+use crate::error::CommandError;
 use crate::ui::Ui;
-use hg::operations::{FindRoot, FindRootErrorKind};
+use hg::operations::FindRoot;
 use hg::utils::files::get_bytes_from_path;
 
 pub const HELP_TEXT: &str = "
@@ -22,15 +22,7 @@ 
 
 impl<'a> Command<'a> for RootCommand<'a> {
     fn run(&self) -> Result<(), CommandError> {
-        let path_buf =
-            FindRoot::new().run().map_err(|err| match err.kind {
-                FindRootErrorKind::RootNotFound(path) => {
-                    CommandErrorKind::RootNotFound(path)
-                }
-                FindRootErrorKind::GetCurrentDirError(e) => {
-                    CommandErrorKind::CurrentDirNotFound(e)
-                }
-            })?;
+        let path_buf = FindRoot::new().run()?;
 
         let bytes = get_bytes_from_path(path_buf);