use anyhow::{Context, Result};
use rustdoc_types as v57;
use rustdoc_types_56 as v56;
pub fn convert_crate(crate_56: v56::Crate) -> Result<v57::Crate> {
let mut json_value =
serde_json::to_value(&crate_56).context("Failed to serialize v56 crate to JSON")?;
if let Some(external_crates) = json_value.get_mut("external_crates")
&& let Some(map) = external_crates.as_object_mut()
{
for (_id, ext_crate) in map.iter_mut() {
if let Some(obj) = ext_crate.as_object_mut() {
obj.insert("path".to_string(), serde_json::json!(""));
}
}
}
if let Some(obj) = json_value.as_object_mut() {
obj.insert("format_version".to_string(), serde_json::json!(57));
}
let crate_57: v57::Crate =
serde_json::from_value(json_value).context("Failed to deserialize as v57 crate")?;
Ok(crate_57)
}