##// END OF EJS Templates
scmutil: add writereporequirements() and route requires writing through it...
scmutil: add writereporequirements() and route requires writing through it In upcoming patches, to implement Share Safe plan we will be introducing requires file in store. We need to route all callers to a single function to check for a share-safe requirement and if present, write requirements to .hg/store/requires instead. After this patch, callers directly calling scmutil.writerequires() are only those where we don't have the repo object, for example when initializing the repository object itself. Differential Revision: https://phab.mercurial-scm.org/D8631

File last commit:

r45570:afecc7f7 default
r45666:a03c177a default
Show More
error.rs
60 lines | 1.6 KiB | application/rls-services+xml | RustLexer
use crate::exitcode;
use crate::ui::UiError;
use std::convert::From;
/// The kind of command error
#[derive(Debug, PartialEq)]
pub enum CommandErrorKind {
/// The command finished without error
Ok,
/// The root of the repository cannot be found
RootNotFound,
/// The current directory cannot be found
CurrentDirNotFound,
/// The standard output stream cannot be written to
StdoutError,
/// The standard error stream cannot be written to
StderrError,
}
impl CommandErrorKind {
pub fn get_exit_code(&self) -> exitcode::ExitCode {
match self {
CommandErrorKind::Ok => exitcode::OK,
CommandErrorKind::RootNotFound => exitcode::ABORT,
CommandErrorKind::CurrentDirNotFound => exitcode::ABORT,
CommandErrorKind::StdoutError => exitcode::ABORT,
CommandErrorKind::StderrError => exitcode::ABORT,
}
}
}
/// The error type for the Command trait
#[derive(Debug, PartialEq)]
pub struct CommandError {
pub kind: CommandErrorKind,
}
impl CommandError {
/// Exist the process with the corresponding exit code.
pub fn exit(&self) -> () {
std::process::exit(self.kind.get_exit_code())
}
}
impl From<CommandErrorKind> for CommandError {
fn from(kind: CommandErrorKind) -> Self {
CommandError { kind }
}
}
impl From<UiError> for CommandError {
fn from(error: UiError) -> Self {
CommandError {
kind: match error {
UiError::StdoutError(_) => CommandErrorKind::StdoutError,
UiError::StderrError(_) => CommandErrorKind::StderrError,
},
}
}
}