1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use std::{io, num, path};

use thiserror::Error;

pub type MyResult<T> = Result<T, MyError>;

#[derive(Error, Debug)]
pub enum MyError {
    #[error(transparent)]
    Chrono(#[from] chrono::ParseError),
    #[error(transparent)]
    Clap(#[from] clap::error::Error),
    #[error(transparent)]
    Glob(#[from] glob::PatternError),
    #[error(transparent)]
    Io(#[from] io::Error),
    #[error(transparent)]
    ParseInt(#[from] num::ParseIntError),
    #[error(transparent)]
    Prefix(#[from] path::StripPrefixError),
    #[error(transparent)]
    Regex(#[from] regex::Error),
    #[error(transparent)]
    Walk(#[from] walkdir::Error),
    #[error("{0}")]
    Text(String),
}

impl MyError {
    pub fn eprint(&self) {
        let error = self.to_string();
        let error = error.trim_end();
        eprintln!("{error}");
    }
}