Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[derive(Debug)]
- enum Error {
- MissingTemplate,
- Io(std::io::Error),
- }
- impl From<std::io::Error> for Error {
- fn from(err: std::io::Error) -> Self {
- Error::Io(err)
- }
- }
- fn main() {
- if let Err(err) = copy_template("foo", "bar") {
- match err {
- Error::MissingTemplate => println!(
- "{} {}",
- "Template file not found in : ".yellow().bold(),
- template_folder.display()
- ),
- Error::Io(err) => {
- eprintln!("io error: {}", err);
- std::process::exit(1);
- }
- }
- }
- }
- pub fn copy_template(template_folder: &Path, target: &Path) -> Result<(), Error> {
- if !template_folder.exists() && !template_folder.is_dir() {
- return Err(Error::MissingTemplate);
- }
- println!(
- "{} {}",
- "Starting copy of : ".green().italic(),
- template_folder.display()
- );
- let paths = fs::read_dir(&template_folder)?;
- for entry in paths {
- let path = entry.expect("valid file entry").path();
- let pathname = path.file_name().expect("valid filename");
- if !path.is_dir() {
- let dest_file = target.join(&pathname);
- fs::copy(&path, dest_file)?;
- println!("{}", path.display());
- } else {
- let new_target = target.join(&pathname);
- std::fs::create_dir_all(&new_target)?;
- println!("{} {}", "Creating folder : ".green(), new_target.display());
- copy_template(&path, &new_target)?;
- }
- }
- Ok(())
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement