From c632965a2ac4b8e0115e8d72301f9f486e778869 Mon Sep 17 00:00:00 2001 From: sgoudham Date: Wed, 8 Jun 2022 02:14:37 +0100 Subject: [PATCH] refactor: Add 'AppError' to allow cleaner propagation of different errors --- src/error.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/error.rs diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..3ff76f3 --- /dev/null +++ b/src/error.rs @@ -0,0 +1,34 @@ +#[derive(Debug, PartialEq)] +pub enum AppError { + CommandFailedToExecute(String), + CommandError(String), + MissingGitRepository(String), + MissingGitRemote(String), + InvalidGitUrl(String), + InvalidUtf8(String), +} + +impl From for AppError { + fn from(error: std::io::Error) -> Self { + AppError::CommandFailedToExecute(error.to_string()) + } +} + +impl From for AppError { + fn from(error: std::str::Utf8Error) -> Self { + AppError::InvalidUtf8(error.to_string()) + } +} + +impl AppError { + pub fn print(&self) -> &String { + match self { + AppError::CommandFailedToExecute(str) + | AppError::MissingGitRepository(str) + | AppError::MissingGitRemote(str) + | AppError::CommandError(str) + | AppError::InvalidGitUrl(str) + | AppError::InvalidUtf8(str) => str, + } + } +}