use std::env;
use std::fs;
use std::path::Path;
fn main() {
let out_dir = env::var("OUT_DIR").unwrap();
let docs_out = Path::new(&out_dir).join("docs");
fs::create_dir_all(&docs_out).unwrap();
for entry in fs::read_dir("docs").unwrap() {
let entry = entry.unwrap();
let path = entry.path();
if path.extension().is_some_and(|ext| ext == "md") {
let content = fs::read_to_string(&path).unwrap();
let transformed = transform_doc_links(&content);
let out_path = docs_out.join(path.file_name().unwrap());
fs::write(&out_path, transformed).unwrap();
}
}
println!("cargo:rerun-if-changed=docs/");
}
fn transform_doc_links(content: &str) -> String {
let mut result = String::with_capacity(content.len());
let mut remaining = content;
while let Some(start) = remaining.find("](./") {
result.push_str(&remaining[..start + 2]);
let after_prefix = &remaining[start + 4..]; if let Some(end) = after_prefix.find(".md)") {
let filename = &after_prefix[..end];
let module_name = filename.replace('-', "_");
result.push_str("crate::guides::");
result.push_str(&module_name);
result.push(')');
remaining = &after_prefix[end + 4..]; } else {
result.push_str("./");
remaining = after_prefix;
}
}
result.push_str(remaining);
result
}