mdbook-preprocessor-utils 0.2.0

Utilities for writing mdBook preprocessors
Documentation
use anyhow::{Error, Result};
use std::fs;
use std::io::ErrorKind;
use std::path::Path;

pub fn copy_assets(src_dir: impl AsRef<Path>, dst_dir: impl AsRef<Path>) -> Result<()> {
  let src_dir = src_dir.as_ref();
  let dst_dir = dst_dir.as_ref();

  println!("cargo:rerun-if-changed={}", src_dir.display());
  fs::create_dir_all(dst_dir)?;

  let src_entries = match fs::read_dir(src_dir) {
    Ok(src_entries) => src_entries,
    Err(err) => match err.kind() {
      ErrorKind::NotFound => return Ok(()),
      _ => return Err(Error::new(err)),
    },
  };

  for entry in src_entries {
    let path = entry?.path();
    fs::copy(&path, dst_dir.join(path.file_name().unwrap()))?;
  }

  Ok(())
}