Advertisement
Guest User

Untitled

a guest
Apr 26th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. #[derive(Debug)]
  2. enum Error {
  3. MissingTemplate,
  4. Io(std::io::Error),
  5. }
  6.  
  7. impl From<std::io::Error> for Error {
  8. fn from(err: std::io::Error) -> Self {
  9. Error::Io(err)
  10. }
  11. }
  12.  
  13. fn main() {
  14. if let Err(err) = copy_template("foo", "bar") {
  15. match err {
  16. Error::MissingTemplate => println!(
  17. "{} {}",
  18. "Template file not found in : ".yellow().bold(),
  19. template_folder.display()
  20. ),
  21. Error::Io(err) => {
  22. eprintln!("io error: {}", err);
  23. std::process::exit(1);
  24. }
  25. }
  26. }
  27. }
  28.  
  29. pub fn copy_template(template_folder: &Path, target: &Path) -> Result<(), Error> {
  30. if !template_folder.exists() && !template_folder.is_dir() {
  31. return Err(Error::MissingTemplate);
  32. }
  33.  
  34. println!(
  35. "{} {}",
  36. "Starting copy of : ".green().italic(),
  37. template_folder.display()
  38. );
  39.  
  40. let paths = fs::read_dir(&template_folder)?;
  41. for entry in paths {
  42. let path = entry.expect("valid file entry").path();
  43. let pathname = path.file_name().expect("valid filename");
  44. if !path.is_dir() {
  45. let dest_file = target.join(&pathname);
  46. fs::copy(&path, dest_file)?;
  47. println!("{}", path.display());
  48. } else {
  49. let new_target = target.join(&pathname);
  50. std::fs::create_dir_all(&new_target)?;
  51. println!("{} {}", "Creating folder : ".green(), new_target.display());
  52. copy_template(&path, &new_target)?;
  53. }
  54. }
  55.  
  56. Ok(())
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement