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 {