diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.rs | 37 | ||||
| -rw-r--r-- | src/multi_error.rs | 51 | 
2 files changed, 54 insertions, 34 deletions
| diff --git a/src/main.rs b/src/main.rs index 8331237..6962370 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,8 +27,10 @@ use rusqlite;  use reflectub::{database, git, github}; +mod multi_error; +use multi_error::MultiError; +  use std::env; -use std::fmt;  use std::fs;  use std::io;  use std::path::{Path, PathBuf}; @@ -47,39 +49,6 @@ fn main() {      };  } - -#[derive(Debug, thiserror::Error)] -struct MultiError { -    errors: Vec<anyhow::Error>, -} - -impl fmt::Display for MultiError { -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { -        write!( -            f, -            "{}", -            self.errors -                .iter() -                .map(|e| format!("{:#}", e)) -                .collect::<Vec<_>>() -                .join("\n"), -        ) -    } -} - -impl From<anyhow::Error> for MultiError { -    fn from(error: anyhow::Error) -> Self { -        MultiError { errors: vec![error] } -    } -} - -impl From<Vec<anyhow::Error>> for MultiError { -    fn from(errors: Vec<anyhow::Error>) -> Self { -        MultiError { errors: errors } -    } -} - -  fn print_usage(opts: &Options) {      print!(          "{}", diff --git a/src/multi_error.rs b/src/multi_error.rs new file mode 100644 index 0000000..efb4462 --- /dev/null +++ b/src/multi_error.rs @@ -0,0 +1,51 @@ +// Copyright (c) 2021  Teddy Wing +// +// This file is part of Reflectub. +// +// Reflectub is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Reflectub is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with Reflectub. If not, see <https://www.gnu.org/licenses/>. + + +use std::fmt; + + +#[derive(Debug, thiserror::Error)] +pub struct MultiError { +    errors: Vec<anyhow::Error>, +} + +impl fmt::Display for MultiError { +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { +        write!( +            f, +            "{}", +            self.errors +                .iter() +                .map(|e| format!("{:#}", e)) +                .collect::<Vec<_>>() +                .join("\n"), +        ) +    } +} + +impl From<anyhow::Error> for MultiError { +    fn from(error: anyhow::Error) -> Self { +        MultiError { errors: vec![error] } +    } +} + +impl From<Vec<anyhow::Error>> for MultiError { +    fn from(errors: Vec<anyhow::Error>) -> Self { +        MultiError { errors: errors } +    } +} | 
