tract-tensorflow 0.5.7

Tiny, no-nonsense, self contained, TensorFlow and ONNX inference
Documentation
use std::io::{BufRead, Write};
use std::{env, fs, io, path};

fn main() {
    let inputs: Vec<path::PathBuf> = fs::read_dir("protos/tensorflow/core/framework")
        .unwrap()
        .map(|entry| entry.unwrap().path())
        .collect();

    let workdir = path::PathBuf::from(env::var("OUT_DIR").unwrap()).join("protobuf-generated");
    dbg!(&workdir);
    let _ = fs::create_dir_all(&workdir);

    protobuf_codegen_pure::run(protobuf_codegen_pure::Args {
        out_dir: workdir.to_str().unwrap(),
        input: &*inputs.iter().map(|a| a.to_str().unwrap()).collect::<Vec<&str>>(),
        includes: &["protos"],
        customize: protobuf_codegen_pure::Customize { ..Default::default() },
    })
    .unwrap();

    for input in inputs {
        let mut broken = workdir.join(input.file_name().unwrap());
        let mut fixed = broken.clone();
        fixed.set_extension("rs");
        broken.set_extension("rs.orig");
        fs::rename(&fixed, &broken).unwrap();
        let mut f = fs::File::create(fixed).unwrap();
        for line in io::BufReader::new(fs::File::open(broken).unwrap()).lines() {
            let line = line.unwrap();
            if !line.starts_with("#![") && !line.starts_with("//!") {
                writeln!(f, "{}", line).unwrap();
            }
        }
    }
}