figfont 0.1.1

Read and parse a FIGlet font in plain or zipped format.
Documentation
fn main() {
    test::generate();
}

mod test {
    use std::{
        env,
        fs::{canonicalize, read_dir, DirEntry, File},
        io::Write,
        path::Path,
    };

    pub fn generate() {
        let out_dir = env::var("OUT_DIR").unwrap();
        let destination = Path::new(&out_dir).join("tests.rs");
        let mut test_file = File::create(&destination).unwrap();

        write_header(&mut test_file);

        let test_fonts = read_dir("./fonts/plain/").unwrap();

        for font in test_fonts {
            write_test("plain_", &mut test_file, &font.unwrap());
        }

        if cfg!(feature = "zip") {
            let test_fonts = read_dir("./fonts/zipped/").unwrap();

            for font in test_fonts {
                write_test("zipped_", &mut test_file, &font.unwrap());
            }
        }
    }

    fn write_header(test_file: &mut File) {
        write!(
            test_file,
            r#"
use figfont::FIGfont;

        "#
        )
        .unwrap();
    }

    fn write_test(prefix: &str, test_file: &mut File, entry: &DirEntry) {
        if entry.file_type().unwrap().is_file() && entry.path().extension().unwrap() == "flf" {
            let p = canonicalize(entry.path()).unwrap();
            let path = p.to_str().unwrap();
            let test_name = p.file_name().unwrap().to_str().unwrap();
            let test_name = &test_name[..(test_name.len() - 4)];

            write!(
                test_file,
                include_str!("./tests/test_template"),
                name = format!("{}{}", prefix, test_name),
                path = path
            )
            .unwrap();
        }
    }
}