Move error to different file and add thiserror impl

i18n
trivernis 2 years ago
parent 4e37078758
commit 36c5f28b1c
Signed by: Trivernis
GPG Key ID: DFFFCC2C7A02DB45

1
Cargo.lock generated

@ -38,6 +38,7 @@ dependencies = [
"rust-embed",
"serde",
"textwrap 0.16.0",
"thiserror",
"tokio",
"toml",
"tracing",

@ -63,6 +63,7 @@ i18n-embed = { version = "0.13.4", features = ["fluent-system", "desktop-request
i18n-embed-fl = "0.6.4"
rust-embed = "6.4.2"
unic-langid = "0.9.1"
thiserror = "1.0.37"
[dependencies.config]
version = "0.13.2"

@ -1,8 +1,8 @@
use std::path::{Path, PathBuf};
use crate::internal::{
commands::ShellCommand,
use crate::{
error::{AppError, AppResult},
internal::commands::ShellCommand,
};
#[derive(Debug, Default)]

@ -3,10 +3,8 @@ use std::path::{Path, PathBuf};
use tokio::process::Child;
use crate::internal::{
commands::ShellCommand,
error::{AppError, AppResult},
};
use crate::error::{AppError, AppResult};
use crate::internal::commands::ShellCommand;
#[derive(Default, Debug, Clone)]
pub struct MakePkgBuilder {

@ -1,4 +1,5 @@
use crate::internal::{commands::ShellCommand, error::AppResult};
use crate::error::AppResult;
use crate::internal::commands::ShellCommand;
#[derive(Debug, Default)]
pub struct PaccacheBuilder {

@ -1,7 +1,5 @@
use crate::internal::{
commands::{ShellCommand, StringOutput},
error::{AppError, AppResult},
};
use crate::error::{AppError, AppResult};
use crate::internal::commands::{ShellCommand, StringOutput};
#[derive(Debug, Default)]
pub struct PacdiffBuilder {}

@ -1,8 +1,8 @@
use std::path::{Path, PathBuf};
use crate::error::AppResult;
use crate::internal::{
commands::{ShellCommand, StringOutput},
error::AppResult,
is_tty,
structs::Options,
};

@ -1,9 +1,7 @@
use std::path::{Path, PathBuf};
use crate::{
internal::{commands::ShellCommand, error::AppResult},
with_suspended_output,
};
use crate::error::AppResult;
use crate::{internal::commands::ShellCommand, with_suspended_output};
#[derive(Default)]
pub struct PagerBuilder {

@ -1,6 +1,7 @@
use std::path::{Path, PathBuf};
use crate::internal::{commands::ShellCommand, error::AppResult};
use crate::error::AppResult;
use crate::internal::commands::ShellCommand;
#[derive(Debug, Default)]
pub struct RmBuilder {

@ -0,0 +1,75 @@
use std::fmt::Debug;
use crate::internal::exit_code::AppExitCode;
use crate::{fl, fl_crash};
use thiserror::Error;
pub type AppResult<T> = Result<T, AppError>;
#[derive(Debug, Error)]
#[allow(clippy::module_name_repetitions)]
pub enum AppError {
#[error("IoError: {0}")]
Io(#[from] std::io::Error),
#[error("AUR RPC call failed {0}")]
Rpc(#[from] aur_rpc::error::RPCError),
#[error("{}", fl!("build-step-violation"))]
BuildStepViolation,
#[error("{} {pkg_name}", fl!("build-error"))]
BuildError { pkg_name: String },
#[error("{}", fl!("user-cancel"))]
UserCancellation,
#[error("{} {}",fl!("missing-deps"), _0.join(", ") )]
MissingDependencies(Vec<String>),
#[error("{} {0}", fl!("makepkg-err"))]
MakePkg(String),
#[error(transparent)]
MinusError(#[from] minus::MinusError),
#[error(transparent)]
FmtError(#[from] std::fmt::Error),
#[error(transparent)]
AlpmError(#[from] crate::internal::alpm::Error),
#[error("{}", fl!("non-zero-exit"))]
NonZeroExit,
#[error("{0}")]
Other(String),
}
impl From<String> for AppError {
fn from(string: String) -> Self {
Self::Other(string)
}
}
impl From<&str> for AppError {
fn from(string: &str) -> Self {
Self::from(string.to_string())
}
}
pub trait SilentUnwrap<T> {
fn silent_unwrap(self, error_code: AppExitCode) -> T;
}
impl<T> SilentUnwrap<T> for AppResult<T> {
fn silent_unwrap(self, exit_code: AppExitCode) -> T {
match self {
Ok(val) => val,
Err(e) => {
tracing::debug!("{e}");
fl_crash!(exit_code, "error-occurred")
}
}
}
}

@ -1,9 +1,9 @@
use std::env;
use std::fmt::Write;
use crate::error::AppError;
use crate::error::AppResult;
use crate::fl;
use crate::internal::error::AppError;
use crate::internal::error::AppResult;
use crate::with_suspended_output;
use minus::Pager;

@ -23,6 +23,8 @@ impl Display for Error {
}
}
impl std::error::Error for Error {}
impl From<alpm::Error> for Error {
fn from(err: alpm::Error) -> Self {
Error::Alpm(err)

@ -4,8 +4,8 @@ use std::path::{Path, PathBuf};
use std::process::{ExitStatus, Stdio};
use tokio::process::{Child, Command};
use crate::error::{AppError, AppResult};
use crate::internal::config::Config;
use crate::internal::error::{AppError, AppResult};
use crate::internal::is_tty;
pub struct StringOutput {

@ -5,7 +5,7 @@ use futures::future;
use crate::builder::pacman::{PacmanQueryBuilder, PacmanSearchBuilder};
use super::error::{AppError, AppResult};
use crate::error::{AppError, AppResult};
use lazy_regex::regex;
#[derive(Clone, Debug)]

@ -1,106 +0,0 @@
use std::error::Error;
use std::fmt::{Debug, Display, Formatter};
use std::io;
use crate::internal::exit_code::AppExitCode;
use crate::{fl, fl_crash};
pub type AppResult<T> = Result<T, AppError>;
#[derive(Debug)]
#[allow(clippy::module_name_repetitions)]
pub enum AppError {
Io(std::io::Error),
Other(String),
Rpc(aur_rpc::error::RPCError),
NonZeroExit,
BuildStepViolation,
BuildError { pkg_name: String },
UserCancellation,
MissingDependencies(Vec<String>),
MakePkg(String),
MinusError(minus::MinusError),
FmtError(std::fmt::Error),
AlpmError(crate::internal::alpm::Error),
}
impl Display for AppError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
AppError::Io(io) => Display::fmt(io, f),
AppError::Rpc(e) => Display::fmt(e, f),
AppError::Other(s) => Display::fmt(s, f),
AppError::NonZeroExit => Display::fmt(&fl!("non-zero-exit"), f),
AppError::BuildStepViolation => Display::fmt(&fl!("build-step-violation"), f),
AppError::BuildError { pkg_name } => write!(f, "{} {pkg_name}", fl!("build-error")),
AppError::UserCancellation => write!(f, "{}", fl!("user-cancel")),
AppError::MissingDependencies(deps) => {
write!(f, "{} {}", fl!("missing-deps"), deps.join(", "))
}
AppError::MakePkg(msg) => write!(f, "{} {msg}", fl!("makepkg-err")),
AppError::MinusError(e) => Display::fmt(e, f),
AppError::FmtError(e) => Display::fmt(e, f),
AppError::AlpmError(e) => Display::fmt(e, f),
}
}
}
impl Error for AppError {}
impl From<io::Error> for AppError {
fn from(e: io::Error) -> Self {
Self::Io(e)
}
}
impl From<aur_rpc::error::RPCError> for AppError {
fn from(e: aur_rpc::error::RPCError) -> Self {
Self::Rpc(e)
}
}
impl From<String> for AppError {
fn from(string: String) -> Self {
Self::Other(string)
}
}
impl From<&str> for AppError {
fn from(string: &str) -> Self {
Self::from(string.to_string())
}
}
impl From<minus::MinusError> for AppError {
fn from(e: minus::MinusError) -> Self {
Self::MinusError(e)
}
}
impl From<std::fmt::Error> for AppError {
fn from(e: std::fmt::Error) -> Self {
Self::FmtError(e)
}
}
impl From<crate::internal::alpm::Error> for AppError {
fn from(e: crate::internal::alpm::Error) -> Self {
Self::AlpmError(e)
}
}
pub trait SilentUnwrap<T> {
fn silent_unwrap(self, error_code: AppExitCode) -> T;
}
impl<T> SilentUnwrap<T> for AppResult<T> {
fn silent_unwrap(self, exit_code: AppExitCode) -> T {
match self {
Ok(val) => val,
Err(e) => {
tracing::debug!("{e}");
fl_crash!(exit_code, "error-occurred")
}
}
}
}

@ -9,7 +9,6 @@ pub mod commands;
pub mod config;
pub mod dependencies;
mod detect;
pub mod error;
pub mod exit_code;
pub mod rpc;
mod sort;

@ -1,6 +1,6 @@
use aur_rpc::{PackageInfo, PackageMetadata, SearchField};
use super::error::AppResult;
use crate::error::AppResult;
pub const URL: &str = "https://aur.archlinux.org/";
pub async fn rpcinfo(pkg: &str) -> AppResult<Option<PackageInfo>> {

@ -2,7 +2,7 @@ use std::time::Duration;
use crate::ShellCommand;
use super::error::AppResult;
use crate::error::AppResult;
/// Loop sudo so it doesn't time out
#[tracing::instrument(level = "trace")]

@ -8,7 +8,7 @@ use textwrap::wrap;
use crate::{internal::exit_code::AppExitCode, logging::get_logger};
use lazy_static::lazy_static;
use super::error::{AppError, SilentUnwrap};
use crate::error::{AppError, SilentUnwrap};
#[macro_export]
/// Macro for printing a message and destructively exiting

@ -5,7 +5,7 @@ use tokio::{
process::{ChildStderr, ChildStdout},
};
use crate::internal::error::{AppError, AppResult};
use crate::error::{AppError, AppResult};
pub struct StdioReader {
stdout: ChildStdout,

@ -4,9 +4,9 @@ use clap::Parser;
use internal::commands::ShellCommand;
use internal::detect;
use internal::error::SilentUnwrap;
use crate::args::{InstallArgs, Operation, QueryArgs, RemoveArgs};
use crate::error::SilentUnwrap;
use crate::interact::page_string;
use crate::internal::config::Config;
use crate::internal::exit_code::AppExitCode;
@ -21,6 +21,7 @@ use std::str::FromStr;
mod args;
mod builder;
mod error;
mod interact;
mod internal;
mod logging;

@ -3,8 +3,9 @@ use futures::future;
use crate::{
builder::{makepkg::MakePkgBuilder, pacman::PacmanInstallBuilder},
error::AppResult,
fl, fl_info,
internal::{dependencies::DependencyInformation, error::AppResult},
internal::dependencies::DependencyInformation,
multi_progress, normal_output,
operations::{
aur_install::common::{build_and_install, create_dependency_batches, download_aur_source},

@ -3,10 +3,8 @@ use aur_rpc::PackageInfo;
use futures::future;
use crate::{
fl_info,
internal::{dependencies::DependencyInformation, error::AppResult, structs::Options},
multi_progress, normal_output,
operations::BuildContext,
error::AppResult, fl_info, internal::dependencies::DependencyInformation,
internal::structs::Options, multi_progress, normal_output, operations::BuildContext,
};
use super::aur_review::AurReview;

@ -1,13 +1,10 @@
use crossterm::style::Stylize;
use futures::future;
use crate::error::{AppError, AppResult};
use crate::{
fl, fl_prompt,
internal::{
dependencies::DependencyInformation,
error::{AppError, AppResult},
structs::Options,
},
internal::{dependencies::DependencyInformation, structs::Options},
logging::output::{print_aur_package_list, print_dependency_list},
normal_output, prompt, spinner,
};

@ -1,7 +1,8 @@
use crate::error::AppResult;
use crate::{
builder::{makepkg::MakePkgBuilder, pacman::PacmanInstallBuilder},
fl,
internal::{dependencies::DependencyInformation, error::AppResult, structs::Options},
internal::{dependencies::DependencyInformation, structs::Options},
operations::aur_install::{
common::build_and_install, make_dependency_removal::MakeDependencyRemoval,
},

@ -1,14 +1,10 @@
use tokio::fs;
use crate::error::{AppError, AppResult};
use crate::{
builder::pager::PagerBuilder,
fl, fl_info, fl_prompt,
internal::{
dependencies::DependencyInformation,
error::{AppError, AppResult},
structs::Options,
utils::get_cache_dir,
},
internal::{dependencies::DependencyInformation, structs::Options, utils::get_cache_dir},
multi_select, prompt, select_opt,
};

@ -15,6 +15,7 @@ use tokio::{
task,
};
use crate::error::{AppError, AppResult};
use crate::{
builder::{
git::{GitCloneBuilder, GitPullBuilder},
@ -25,7 +26,6 @@ use crate::{
crash, fl, fl_info,
internal::{
alpm::{Alpm, PackageFrom},
error::{AppError, AppResult},
exit_code::AppExitCode,
utils::{get_cache_dir, wrap_text},
},

@ -1,7 +1,8 @@
use crate::error::AppResult;
use crate::{
builder::pacman::PacmanUninstallBuilder,
fl, fl_info, fl_prompt,
internal::{dependencies::DependencyInformation, error::AppResult, structs::Options},
internal::{dependencies::DependencyInformation, structs::Options},
prompt,
};

@ -2,7 +2,7 @@ use aur_rpc::PackageInfo;
use std::path::{Path, PathBuf};
use crate::internal::error::{AppError, AppResult};
use crate::error::{AppError, AppResult};
use crate::internal::exit_code::AppExitCode;
use crate::{cancelled, crash, fl, fl_crash, Options};

@ -1,9 +1,10 @@
use std::collections::HashSet;
use crate::error::AppResult;
use crate::{
builder::pacman::PacmanInstallBuilder,
fl_info,
internal::{dependencies::DependencyInformation, error::AppResult, structs::Options},
internal::{dependencies::DependencyInformation, structs::Options},
};
use super::{aur_dependency_installation::AurDependencyInstallation, BuildContext};

@ -2,9 +2,9 @@ use std::fmt::Display;
use std::fmt::Formatter;
use std::str::FromStr;
use crate::error::SilentUnwrap;
use crate::fl;
use crate::internal::alpm::Alpm;
use crate::internal::error::SilentUnwrap;
use crate::internal::exit_code::AppExitCode;
use crate::internal::rpc::rpcsearch;
use crate::internal::utils::wrap_text;

@ -1,7 +1,7 @@
use crate::args::UpgradeArgs;
use crate::builder::pacman::{PacmanColor, PacmanQueryBuilder, PacmanUpgradeBuilder};
use crate::error::SilentUnwrap;
use crate::internal::detect;
use crate::internal::error::SilentUnwrap;
use crate::internal::exit_code::AppExitCode;
use crate::internal::rpc::rpcinfo;
use crate::operations::aur_install::aur_install;

Loading…
Cancel
Save