mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-06-15 23:26:36 +00:00
feat: Merge --disable-strategies with ones in cargo manifest
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
90d47f76b1
commit
c82a74c73f
2 changed files with 33 additions and 14 deletions
|
@ -1,7 +1,7 @@
|
||||||
use std::{
|
use std::{
|
||||||
env,
|
env,
|
||||||
ffi::OsString,
|
ffi::OsString,
|
||||||
fmt,
|
fmt, mem,
|
||||||
num::{NonZeroU16, NonZeroU64, ParseIntError},
|
num::{NonZeroU16, NonZeroU64, ParseIntError},
|
||||||
path::PathBuf,
|
path::PathBuf,
|
||||||
str::FromStr,
|
str::FromStr,
|
||||||
|
@ -570,7 +570,7 @@ You cannot use --{option} and specify multiple packages at the same time. Do one
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let has_strategies_override = !opts.strategies.is_empty();
|
let ignore_disabled_strategies = !opts.strategies.is_empty();
|
||||||
|
|
||||||
// Default strategies if empty
|
// Default strategies if empty
|
||||||
if opts.strategies.is_empty() {
|
if opts.strategies.is_empty() {
|
||||||
|
@ -626,15 +626,14 @@ You cannot use --{option} and specify multiple packages at the same time. Do one
|
||||||
pkg_url: opts.pkg_url.take(),
|
pkg_url: opts.pkg_url.take(),
|
||||||
pkg_fmt: opts.pkg_fmt.take(),
|
pkg_fmt: opts.pkg_fmt.take(),
|
||||||
bin_dir: opts.bin_dir.take(),
|
bin_dir: opts.bin_dir.take(),
|
||||||
disabled_strategies: (!opts.disable_strategies.is_empty() || has_strategies_override).then(
|
disabled_strategies: Some(
|
||||||
|| {
|
mem::take(&mut opts.disable_strategies)
|
||||||
opts.disable_strategies
|
.into_iter()
|
||||||
.iter()
|
|
||||||
.map(|strategy| strategy.0)
|
.map(|strategy| strategy.0)
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
.into_boxed_slice()
|
.into_boxed_slice(),
|
||||||
},
|
|
||||||
),
|
),
|
||||||
|
ignore_disabled_strategies,
|
||||||
signing: None,
|
signing: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,11 @@ impl PkgMeta {
|
||||||
where
|
where
|
||||||
It: IntoIterator<Item = &'a PkgOverride> + Clone,
|
It: IntoIterator<Item = &'a PkgOverride> + Clone,
|
||||||
{
|
{
|
||||||
|
let ignore_disabled_strategies = pkg_overrides
|
||||||
|
.clone()
|
||||||
|
.into_iter()
|
||||||
|
.any(|pkg_override| pkg_override.ignore_disabled_strategies);
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
pkg_url: pkg_overrides
|
pkg_url: pkg_overrides
|
||||||
.clone()
|
.clone()
|
||||||
|
@ -126,10 +131,22 @@ impl PkgMeta {
|
||||||
.find_map(|pkg_override| pkg_override.signing.clone())
|
.find_map(|pkg_override| pkg_override.signing.clone())
|
||||||
.or_else(|| self.signing.clone()),
|
.or_else(|| self.signing.clone()),
|
||||||
|
|
||||||
disabled_strategies: pkg_overrides
|
disabled_strategies: if ignore_disabled_strategies {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
let mut disabled_strategies = pkg_overrides
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.find_map(|pkg_override| pkg_override.disabled_strategies.clone())
|
.filter_map(|pkg_override| pkg_override.disabled_strategies.as_deref())
|
||||||
.or_else(|| self.disabled_strategies.clone()),
|
.flatten()
|
||||||
|
.chain(self.disabled_strategies.as_deref().into_iter().flatten())
|
||||||
|
.copied()
|
||||||
|
.collect::<Vec<Strategy>>();
|
||||||
|
|
||||||
|
disabled_strategies.sort_unstable();
|
||||||
|
disabled_strategies.dedup();
|
||||||
|
|
||||||
|
Some(disabled_strategies.into_boxed_slice())
|
||||||
|
},
|
||||||
|
|
||||||
overrides: Default::default(),
|
overrides: Default::default(),
|
||||||
}
|
}
|
||||||
|
@ -156,6 +173,9 @@ pub struct PkgOverride {
|
||||||
|
|
||||||
/// Package signing configuration
|
/// Package signing configuration
|
||||||
pub signing: Option<PkgSigning>,
|
pub signing: Option<PkgSigning>,
|
||||||
|
|
||||||
|
#[serde(skip)]
|
||||||
|
pub ignore_disabled_strategies: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue