use std::path::PathBuf;

use tidy::{t, walk};

pub const VERSION_PLACEHOLDER: &str = "CURRENT_RUSTC_VERSION";

fn main() {
    let root_path: PathBuf = std::env::args_os().nth(1).expect("need path to root of repo").into();
    let version_path = root_path.join("src").join("version");
    let version_str = t!(std::fs::read_to_string(&version_path), version_path);
    let version_str = version_str.trim();
    walk::walk_many(
        &[
            &root_path.join("compiler"),
            &root_path.join("library"),
            &root_path.join("src/doc/rustc"),
            &root_path.join("src/doc/rustdoc"),
        ],
        |path, _is_dir| walk::filter_dirs(path),
        &mut |entry, contents| {
            if !contents.contains(VERSION_PLACEHOLDER) {
                return;
            }
            let new_contents = contents.replace(VERSION_PLACEHOLDER, version_str);
            let path = entry.path();
            t!(std::fs::write(&path, new_contents), path);
        },
    );
}
