diff --git a/src/app/mod.rs b/src/app/mod.rs index 140acd1..6097062 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -1,5 +1,5 @@ use crate::error::*; - +use crate::sys::should_be_backed; #[cfg(unix)] use crate::sys::unix::*; use fs_extra::copy_items; @@ -14,22 +14,20 @@ use std::path::{Path, PathBuf}; pub fn backup(origin_dir: PathBuf, target_dir: PathBuf) -> Result<()> { let path_target_dir: Box = target_dir.clone().into(); - if let None = path_target_dir.read_dir().unwrap().next() { - /*match std::fs::copy(origin_dir, target_dir) { + if path_target_dir.read_dir().unwrap().next().is_none() { + let dir: Box = origin_dir.into(); + match copy_items(&[dir], target_dir, &fs_extra::dir::CopyOptions::default()) { Ok(_) => return Ok(()), Err(_) => { return Err(Error { kind: ErrorKind::FSError, }) } - }*/ - let path: Box = origin_dir.into(); - let _ = copy_items(&[path], target_dir, &fs_extra::dir::CopyOptions::default()).unwrap(); - return Ok(()); + } } // Some testing :) - /*println!("origin_dir: {} ", origin_dir.display()); + println!("origin_dir: {} ", origin_dir.display()); println!("target_dir: {} ", target_dir.display()); println!( "Should be backed: {}", @@ -37,6 +35,6 @@ pub fn backup(origin_dir: PathBuf, target_dir: PathBuf) -> Result<()> { >::try_into(origin_dir).unwrap(), >::try_into(target_dir).unwrap() ) - );*/ + ); Ok(()) } diff --git a/src/sys.rs b/src/sys.rs index 7054f62..0c05346 100644 --- a/src/sys.rs +++ b/src/sys.rs @@ -1,5 +1,3 @@ -use crate::error::{Error, ErrorKind}; - pub fn should_be_backed(file_to_backup: impl File, already_backed_file: impl File) -> bool { #[cfg(windows)] if file_to_backup.is_folder() { @@ -19,8 +17,9 @@ trait File { } #[cfg(windows)] pub mod windows { + use crate::error::{Error, ErrorKind}; use std::fs; - use std::os::windows::MetadataExt; + use std::os::windows::prelude::MetadataExt; use std::path::{Path, PathBuf}; pub struct WindowsFileTime { @@ -36,7 +35,7 @@ pub mod windows { } } impl TryFrom for WindowsFileTime { - type Error = Error; + type Error = crate::error::Error; fn try_from(value: PathBuf) -> Result { let path: Box = value.into(); let metadata = match fs::metadata(value) { @@ -56,6 +55,7 @@ pub mod windows { } #[cfg(unix)] pub mod unix { + use crate::error::{Error, ErrorKind}; use std::fs; use std::os::unix::fs::MetadataExt; use std::path::PathBuf; @@ -71,8 +71,8 @@ pub mod unix { fn try_from(value: PathBuf) -> Result { match fs::metadata(value) { Ok(file_metadata) => Ok(UnixFileTime(file_metadata.mtime())), - Err(_) => Err(super::Error { - kind: super::ErrorKind::FSError, + Err(_) => Err(Error { + kind: ErrorKind::FSError, }), } }