From 31d9716d28582eaa4c3a19d35504cf485406c625 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Thu, 21 Jul 2022 19:50:23 +1000 Subject: [PATCH] Refactor: Extract `CratesToml::append{_to_path}` Signed-off-by: Jiahao XU --- src/binstall/install.rs | 8 ++------ src/metafiles/v1.rs | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/binstall/install.rs b/src/binstall/install.rs index 6c1830ea..9df6013a 100644 --- a/src/binstall/install.rs +++ b/src/binstall/install.rs @@ -109,12 +109,8 @@ async fn install_from_package( let bins: BTreeSet = bin_files.into_iter().map(|bin| bin.base_name).collect(); - { - debug!("Writing .crates.toml"); - let mut c1 = metafiles::v1::CratesToml::load().unwrap_or_default(); - c1.insert(cvs.clone(), bins.clone()); - c1.write()?; - } + debug!("Writing .crates.toml"); + metafiles::v1::CratesToml::append(cvs.clone(), bins.clone())?; { debug!("Writing .crates2.json"); diff --git a/src/metafiles/v1.rs b/src/metafiles/v1.rs index 1180814a..12e34641 100644 --- a/src/metafiles/v1.rs +++ b/src/metafiles/v1.rs @@ -42,6 +42,25 @@ impl CratesToml { fs::write(path, &toml::to_vec(&self)?)?; Ok(()) } + + pub fn append_to_path( + path: impl AsRef, + cvs: CrateVersionSource, + bins: BTreeSet, + ) -> Result<(), CratesTomlParseError> { + let mut c1 = Self::load_from_path(path.as_ref()).unwrap_or_default(); + c1.insert(cvs, bins); + c1.write_to_path(path.as_ref())?; + + Ok(()) + } + + pub fn append( + cvs: CrateVersionSource, + bins: BTreeSet, + ) -> Result<(), CratesTomlParseError> { + Self::append_to_path(Self::default_path()?, cvs, bins) + } } impl FromStr for CratesToml {