mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-04-25 14:50:04 +00:00
Optimize applying PkgOverride
s into PkgMeta
(#429)
* Refactor: Rm `PkgMeta::clone_without_overrides` * Impl new fn `PkgMeta::merge_overrides` to avoid unnecessary clone Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
417143e44d
commit
b8d2184ee9
2 changed files with 36 additions and 17 deletions
|
@ -43,16 +43,6 @@ pub struct PkgMeta {
|
|||
}
|
||||
|
||||
impl PkgMeta {
|
||||
pub fn clone_without_overrides(&self) -> Self {
|
||||
Self {
|
||||
pkg_url: self.pkg_url.clone(),
|
||||
pkg_fmt: self.pkg_fmt,
|
||||
bin_dir: self.bin_dir.clone(),
|
||||
pub_key: self.pub_key.clone(),
|
||||
overrides: BTreeMap::new(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Merge configuration overrides into object
|
||||
pub fn merge(&mut self, pkg_override: &PkgOverride) {
|
||||
if let Some(o) = &pkg_override.pkg_url {
|
||||
|
@ -65,6 +55,36 @@ impl PkgMeta {
|
|||
self.bin_dir = Some(o.clone());
|
||||
}
|
||||
}
|
||||
|
||||
/// Merge configuration overrides into object
|
||||
///
|
||||
/// * `pkg_overrides` - ordered in preference
|
||||
pub fn merge_overrides<'a, It>(&self, pkg_overrides: It) -> Self
|
||||
where
|
||||
It: IntoIterator<Item = &'a PkgOverride> + Clone,
|
||||
{
|
||||
Self {
|
||||
pkg_url: pkg_overrides
|
||||
.clone()
|
||||
.into_iter()
|
||||
.find_map(|pkg_override| pkg_override.pkg_url.clone())
|
||||
.or_else(|| self.pkg_url.clone()),
|
||||
|
||||
pkg_fmt: pkg_overrides
|
||||
.clone()
|
||||
.into_iter()
|
||||
.find_map(|pkg_override| pkg_override.pkg_fmt)
|
||||
.or(self.pkg_fmt),
|
||||
|
||||
bin_dir: pkg_overrides
|
||||
.into_iter()
|
||||
.find_map(|pkg_override| pkg_override.bin_dir.clone())
|
||||
.or_else(|| self.bin_dir.clone()),
|
||||
|
||||
pub_key: self.pub_key.clone(),
|
||||
overrides: Default::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Target specific overrides for binary installation
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue