diff --git a/upload/src/config.rs b/upload/src/config.rs index 0d75a1b..b62de01 100644 --- a/upload/src/config.rs +++ b/upload/src/config.rs @@ -1,11 +1,13 @@ -use std::fs; +use std::{fmt, fs}; +#[derive(Debug)] pub struct Config { pub user: String, pub pword: String, pub dir: String, } +#[derive(Debug)] pub enum ConfigErr { TooManyDirectories, NotEnoughArgs(String), @@ -13,6 +15,17 @@ pub enum ConfigErr { NotADirectory, } +impl fmt::Display for ConfigErr { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + ConfigErr::TooManyDirectories => write!(f, "Too many directories"), + ConfigErr::NotEnoughArgs(args) => write!(f, "Missing {}", args), + ConfigErr::UnknownArg(arg) => write!(f, "Unknown arg {}", arg), + ConfigErr::NotADirectory => write!(f, "Not a directory"), + } + } +} + pub fn extract() -> Result { let mut user: Option = None; let mut pword: Option = None; diff --git a/upload/src/main.rs b/upload/src/main.rs index 5fcd88d..6af0ec9 100644 --- a/upload/src/main.rs +++ b/upload/src/main.rs @@ -2,18 +2,10 @@ mod config; fn main() -> Result<(), ()> { // get config items - let config = match config::extract() { - Ok(v) => v, - Err(err) => { - match err { - config::ConfigErr::TooManyDirectories => println!("Too many directories"), - config::ConfigErr::NotEnoughArgs(args) => println!("Missing {}", args), - config::ConfigErr::UnknownArg(arg) => println!("Unknown arg {}", arg), - config::ConfigErr::NotADirectory => println!("Not a directory"), - } - return Err(()); - } - }; + let config = config::extract().or_else(|x| { + println!("{}", x); + Err(()) + })?; println!( "user: {}