Files
uv/crates/uv-python/build.rs
konsti b442aae80e Only rebuild download JSON on change (#13261)
By default, Cargo runs the build script if any file in the package
changes
(https://doc.rust-lang.org/cargo/reference/build-scripts.html#change-detection).
In our case, we only need to rerun it if `download-metadata.json`
changed.
2025-05-02 07:49:34 -05:00

43 lines
1.2 KiB
Rust

use std::fs;
use std::path::Path;
fn process_json(data: &serde_json::Value) -> serde_json::Value {
let mut out_data = serde_json::Map::new();
if let Some(obj) = data.as_object() {
for (key, value) in obj {
if let Some(variant) = value.get("variant") {
// Exclude debug variants for now, we don't support them
if variant == "debug" {
continue;
}
}
out_data.insert(key.clone(), value.clone());
}
}
serde_json::Value::Object(out_data)
}
fn main() {
let version_metadata = "download-metadata.json";
println!("cargo::rerun-if-changed={version_metadata}");
let target = Path::new("src/download-metadata-minified.json");
let json_data: serde_json::Value = serde_json::from_str(
#[allow(clippy::disallowed_methods)]
&fs::read_to_string(version_metadata).expect("Failed to read download-metadata.json"),
)
.expect("Failed to parse JSON");
let filtered_data = process_json(&json_data);
#[allow(clippy::disallowed_methods)]
fs::write(
target,
serde_json::to_string(&filtered_data).expect("Failed to serialize JSON"),
)
.expect("Failed to write minified JSON");
}