use clap::Parser;
use std::{
fs::{ File, create_dir_all},
path::Path,
};
#[derive(Parser, Debug)]
pub struct Arguments {
filenames: Vec<String>,
}
pub fn run(args: Arguments) -> Result<(), Box<dyn std::error::Error>> {
if args.filenames.len() < 1 {
return Err("Enter files to be created.. ".into());
}
for filename in args.filenames {
let path = Path::new(match filename.as_bytes()[0] == b'/' {
true => &filename[1..],
_ => &filename,
});
let found = path.is_file();
if found {
println!("New file not created. File: {} already exists.", filename);
} else {
let parent = path.parent();
match parent {
Some(dir_path) => create_dir_all(dir_path)?,
None => {}
}
File::create(path)?;
println!("File: {} created.", filename);
}
}
Ok(())
}