#![allow(dead_code)]
use std::fs;
use std::path::{Path, PathBuf};
pub fn vendor_root() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../../schemas/v0")
}
pub fn load_raw(path: &Path) -> String {
fs::read_to_string(path).unwrap_or_else(|e| panic!("read {}: {e}", path.display()))
}
pub fn json_files(dir: &Path) -> Vec<PathBuf> {
let mut files = Vec::new();
walk(dir, &mut files);
files.sort();
files
}
fn walk(dir: &Path, files: &mut Vec<PathBuf>) {
for entry in fs::read_dir(dir).unwrap_or_else(|e| panic!("read dir {}: {e}", dir.display())) {
let entry = entry.expect("dir entry");
let path = entry.path();
if path.is_dir() {
walk(&path, files);
} else if path.extension().and_then(|e| e.to_str()) == Some("json") {
files.push(path);
}
}
}
pub fn load_dir_raw(dir: &Path) -> Vec<String> {
json_files(dir).iter().map(|p| load_raw(p)).collect()
}