diff --git a/src/main.rs b/src/main.rs index cd6db4b..2f2431b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,9 +2,9 @@ use clap::{Parser, Subcommand}; use std::fs; use std::io; -use std::fmt; use std::path::Path; + const STORAGE_PATH: &str = "storage"; @@ -29,41 +29,24 @@ enum Commands { } -enum RuntimeError { +enum InitError { Reinit, BadInit } -impl fmt::Display for RuntimeError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - RuntimeError::Reinit => write!(f, "Initialization can't be second time. Remove store folder if you want new inizilization"), - RuntimeError::BadInit => write!(f, "Can`t create storage folder") - } - } -} - -impl From for std::io::Error { - fn from(err: RuntimeError) -> std::io::Error { - match err { - RuntimeError::Reinit => std::io::Error::new(std::io::ErrorKind::AlreadyExists, "Reinitialization attempted"), - RuntimeError::BadInit => std::io::Error::new(std::io::ErrorKind::Other, "Bad initialization"), - } - } +fn is_inited() -> bool { + let path = Path::new(STORAGE_PATH); + return path.exists(); } -fn init() -> Result<(), RuntimeError> { - let path = Path::new(STORAGE_PATH); - if path.exists() { - return Err(RuntimeError::Reinit); +fn init() -> Result<(), InitError> { + if is_inited() { + return Err(InitError::Reinit); } - match fs::create_dir(STORAGE_PATH) { Ok(_) => return Ok(()), - Err(_) => return Err(RuntimeError::BadInit), + Err(_) => return Err(InitError::BadInit), } - - Ok(()) } fn main() -> io::Result<()> { @@ -71,8 +54,8 @@ fn main() -> io::Result<()> { match &cli.command { Some(Commands::Init) => { init().map_err(|e| match e { - RuntimeError::Reinit => std::io::Error::new(std::io::ErrorKind::AlreadyExists, "Reinitialization attempted"), - RuntimeError::BadInit => std::io::Error::new(std::io::ErrorKind::Other, "Bad initialization"), + InitError::Reinit => std::io::Error::new(std::io::ErrorKind::AlreadyExists, "Reinitialization attempted"), + InitError::BadInit => std::io::Error::new(std::io::ErrorKind::Other, "Bad initialization"), })?; println!("Initializing storage and config."); }