use std::env;
use std::fs;
use std::path::PathBuf;
const DOCS_START: &str = "<!-- macro-template-docs-start -->";
const DOCS_END: &str = "<!-- macro-template-docs-end -->";
fn main() {
let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let readme = manifest_dir.join("README.md");
let readme = if readme.exists() {
readme
} else {
let workspace_dir = PathBuf::from(env::var_os("CARGO_WORKSPACE_DIR").unwrap());
workspace_dir.join("README.md")
};
println!("cargo:rerun-if-changed={}", readme.display());
let readme = fs::read_to_string(readme).unwrap();
let start = readme
.find(DOCS_START)
.unwrap_or_else(|| panic!("missing {DOCS_START} marker in README.md"));
let end = readme
.find(DOCS_END)
.unwrap_or_else(|| panic!("missing {DOCS_END} marker in README.md"));
assert!(
start < end,
"{DOCS_START} must appear before {DOCS_END} in README.md"
);
let crate_docs = readme[start + DOCS_START.len()..end].trim();
let out_dir = PathBuf::from(env::var_os("OUT_DIR").unwrap());
fs::write(out_dir.join("crate-docs.md"), crate_docs).unwrap();
}