use serde::Deserialize;
use std::{collections::HashMap, env, fs, path::Path};
fn main() {
let out_dir = env::var_os("OUT_DIR").unwrap();
let cargo_toml: CargoToml = toml::from_str(include_str!("Cargo.toml")).unwrap();
let reqwest = cargo_toml
.dependencies
.iter()
.find(|d| d.0 == "reqwest")
.expect("reqwest should be present")
.1;
let reqwest_version = match reqwest {
Package::Version(version) => version,
Package::Manifest { version } => version,
};
let reqwest_version_txt = Path::new(&out_dir).join("reqwest_version.txt");
fs::write(&reqwest_version_txt, reqwest_version).unwrap();
println!("cargo::rerun-if-changed=build.rs");
println!("cargo::rerun-if-changed=Cargo.toml");
}
#[derive(Deserialize)]
struct CargoToml {
dependencies: HashMap<String, Package>,
}
#[derive(Deserialize)]
#[serde(untagged)]
enum Package {
Version(String),
Manifest { version: String },
}