Rustelo/features/content-graph/templates/build_rs_snippet.rs
Jesús Pérez c0281e759c
chore: update
2026-07-18 20:14:32 +01:00

35 lines
1.6 KiB
Rust

// content-graph feature — build.rs integration snippet.
//
// Add this block to the implementation's server/build.rs (or as a separate
// build step) after sourcing the required environment variables.
//
// Required .env entries (add to foundation/.env):
//
// CONTENT_GRAPH_CONTENT_DIR=site/content
// CONTENT_GRAPH_NICKEL_SCHEMA_DIR=rustelo/nickel
// CONTENT_GRAPH_FRAMEWORK_ONTOLOGY=/abs/path/to/rustelo/.ontology/core.ncl
// CONTENT_GRAPH_IMPL_ONTOLOGY=.ontology/core.ncl
// CONTENT_GRAPH_FRAMEWORK_ADRS_GLOB=/abs/path/to/rustelo/adrs/adr-*.ncl
// CONTENT_GRAPH_IMPL_ADRS_GLOB=adrs/adr-*.ncl
// ONTOREF_NICKEL_IMPORT_PATH=/abs/path/to/ontoref/ontology
fn generate_content_graph() {
use content_graph::build::{codegen, graph_generator::GraphGeneratorConfig};
let config = GraphGeneratorConfig::from_env()
.expect("content-graph: missing required environment variables — see templates/build_rs_snippet.rs");
let out_dir = std::path::PathBuf::from(std::env::var("OUT_DIR").unwrap());
let graph = graph_generator::generate(&config)
.expect("content-graph: graph generation failed");
codegen::write_outputs(&graph, &out_dir)
.expect("content-graph: codegen write failed");
// Invalidate when any ontology or ADR file changes
println!("cargo:rerun-if-env-changed=CONTENT_GRAPH_CONTENT_DIR");
println!("cargo:rerun-if-env-changed=ONTOREF_NICKEL_IMPORT_PATH");
println!("cargo:rerun-if-changed={}", config.framework_ontology.display());
println!("cargo:rerun-if-changed={}", config.impl_ontology.display());
}