syncat-stylesheet 3.6.0

Parser for Syncat Stylesheets.
Documentation
use std::env;
use std::ffi::OsString;
use std::fs;
use std::path::Path;

fn main() {
    println!("cargo:rerun-if-changed=./node_modules/tree-sitter-syncat-stylesheet");

    let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
    let path = Path::new(&manifest_dir).join("./node_modules/tree-sitter-syncat-stylesheet/src");
    let package = "tree-sitter-syncat-stylesheet".to_string();

    for file in fs::read_dir(&path)
        .unwrap_or_else(|_| panic!("Package {} is not found at {:?}", package, path))
    {
        // each file is meant to be built individually and linked
        let mut build = cc::Build::new();
        if let Ok(file) = file {
            if file.path().is_dir() {
                continue;
            }
            if file.path().file_name() == Some(&OsString::from("binding.cc")) {
                // we don't want the C++ binding
                continue;
            }
            if file.path().extension() == Some(&OsString::from("c")) {
                build.file(file.path());
            } else if file.path().extension() == Some(&OsString::from("cc")) {
                build.cpp(true).file(file.path());
            } else {
                continue;
            }
            build.include(&path).warnings(false).compile(&format!(
                "{}-{}",
                package,
                file.path().file_stem().unwrap().to_str().unwrap()
            ));
        }
    }
}