Retain and respect settings in tool upgrades (#5937)

## Summary

We now persist the `ResolverInstallerOptions` when writing out a tool
receipt. When upgrading, we grab the saved options, and merge with the
command-line arguments and user-level filesystem settings (CLI > receipt
> filesystem).
This commit is contained in:
Charlie Marsh 2024-08-09 14:21:49 -04:00 committed by GitHub
parent 44f94524f3
commit f89403f4f6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 604 additions and 131 deletions

View file

@ -32,7 +32,8 @@ impl Display for BuildKind {
}
}
#[derive(Debug, Default, Clone, PartialEq, Eq)]
#[derive(Debug, Default, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "kebab-case", deny_unknown_fields)]
pub struct BuildOptions {
no_binary: NoBinary,
no_build: NoBuild,
@ -111,7 +112,8 @@ impl BuildOptions {
}
}
#[derive(Debug, Default, Clone, PartialEq, Eq)]
#[derive(Debug, Default, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "kebab-case", deny_unknown_fields)]
pub enum NoBinary {
/// Allow installation of any wheel.
#[default]
@ -206,7 +208,8 @@ impl NoBinary {
}
}
#[derive(Debug, Default, Clone, PartialEq, Eq)]
#[derive(Debug, Default, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "kebab-case", deny_unknown_fields)]
pub enum NoBuild {
/// Allow building wheels from any source distribution.
#[default]
@ -305,7 +308,7 @@ impl NoBuild {
}
}
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, serde::Deserialize)]
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(deny_unknown_fields, rename_all = "kebab-case")]
#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]