diff -r ead435aa5294 -r a2eda1ff22aa rust/rhg/src/error.rs --- a/rust/rhg/src/error.rs Tue Nov 24 15:11:58 2020 +0100 +++ b/rust/rhg/src/error.rs Tue Nov 24 17:49:16 2020 +0100 @@ -1,6 +1,7 @@ use crate::exitcode; use crate::ui::UiError; use hg::operations::{FindRootError, FindRootErrorKind}; +use hg::requirements::RequirementsError; use hg::utils::files::get_bytes_from_path; use std::convert::From; use std::path::PathBuf; @@ -12,9 +13,8 @@ RootNotFound(PathBuf), /// The current directory cannot be found CurrentDirNotFound(std::io::Error), - /// Error while reading or writing a file - // TODO: add the file name/path? - FileError(std::io::Error), + /// `.hg/requires` + RequirementsError(RequirementsError), /// The standard output stream cannot be written to StdoutError, /// The standard error stream cannot be written to @@ -30,7 +30,7 @@ match self { CommandErrorKind::RootNotFound(_) => exitcode::ABORT, CommandErrorKind::CurrentDirNotFound(_) => exitcode::ABORT, - CommandErrorKind::FileError(_) => exitcode::ABORT, + CommandErrorKind::RequirementsError(_) => exitcode::ABORT, CommandErrorKind::StdoutError => exitcode::ABORT, CommandErrorKind::StderrError => exitcode::ABORT, CommandErrorKind::Abort(_) => exitcode::ABORT, @@ -62,6 +62,11 @@ ] .concat(), ), + CommandErrorKind::RequirementsError( + RequirementsError::Corrupted, + ) => Some( + "abort: .hg/requires is corrupted\n".as_bytes().to_owned(), + ), CommandErrorKind::Abort(message) => message.to_owned(), _ => None, } @@ -115,3 +120,11 @@ } } } + +impl From for CommandError { + fn from(err: RequirementsError) -> Self { + CommandError { + kind: CommandErrorKind::RequirementsError(err), + } + } +}