From 1e725a9ffeaf4bfbba79a19b251f435570b132f8 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Thu, 21 Jul 2022 19:58:23 +1000 Subject: [PATCH] Refactor: Extract `Crates2Json::append{_to_path}` Signed-off-by: Jiahao XU --- src/binstall/install.rs | 28 ++++++++++++---------------- src/metafiles/v2.rs | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/binstall/install.rs b/src/binstall/install.rs index 9df6013a..677423c9 100644 --- a/src/binstall/install.rs +++ b/src/binstall/install.rs @@ -112,22 +112,18 @@ async fn install_from_package( debug!("Writing .crates.toml"); metafiles::v1::CratesToml::append(cvs.clone(), bins.clone())?; - { - debug!("Writing .crates2.json"); - let mut c2 = metafiles::v2::Crates2Json::load().unwrap_or_default(); - c2.insert( - cvs, - metafiles::v2::CrateInfo { - version_req: Some(version), - bins, - profile: "release".into(), - target: fetcher.target().to_string(), - rustc: format!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")), - ..Default::default() - }, - ); - c2.write()?; - } + debug!("Writing .crates2.json"); + metafiles::v2::Crates2Json::append( + cvs, + metafiles::v2::CrateInfo { + version_req: Some(version), + bins, + profile: "release".into(), + target: fetcher.target().to_string(), + rustc: format!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")), + ..Default::default() + }, + )?; Ok(()) }) diff --git a/src/metafiles/v2.rs b/src/metafiles/v2.rs index 70c4e46e..1501e238 100644 --- a/src/metafiles/v2.rs +++ b/src/metafiles/v2.rs @@ -63,6 +63,22 @@ impl Crates2Json { fs::write(path, &serde_json::to_vec(&self)?)?; Ok(()) } + + pub fn append_to_path( + path: impl AsRef, + cvs: CrateVersionSource, + info: CrateInfo, + ) -> Result<(), Crates2JsonParseError> { + let mut c2 = Self::load_from_path(path.as_ref()).unwrap_or_default(); + c2.insert(cvs, info); + c2.write_to_path(path.as_ref())?; + + Ok(()) + } + + pub fn append(cvs: CrateVersionSource, info: CrateInfo) -> Result<(), Crates2JsonParseError> { + Self::append_to_path(Self::default_path()?, cvs, info) + } } #[derive(Debug, Diagnostic, Error)]