use std::fs::File;
use std::io::{Read, Write};
use std::path::Path;
fn main() {
let schema_path = Path::new("schemas/port.swagger.json");
if !schema_path.exists() {
panic!(
"schema file {schema_path:?} is missing. Download the Port OpenAPI schema and place it at this path."
);
}
let mut file = File::open(schema_path).expect("failed to open schema file");
let mut contents = String::new();
file.read_to_string(&mut contents).expect("failed to read schema file");
let digest = sha256::digest(contents.as_bytes());
let out_dir = std::env::var("OUT_DIR").expect("OUT_DIR not set");
let mut output =
File::create(Path::new(&out_dir).join("schema_meta.rs")).expect("failed to create output");
writeln!(output, "pub const PORT_SCHEMA_SHA256: &str = \"{}\";", digest)
.expect("failed to write output");
}
mod sha256 {
use sha2::{Digest, Sha256};
pub fn digest(data: &[u8]) -> String {
let mut hasher = Sha256::new();
hasher.update(data);
let hash = hasher.finalize();
hex::encode(hash)
}
}