Create a tool to manage version requirements in manifest and lock files #583
Labels
crate:xtask
Modifies the maintainers CLI
for:maintainability
Improves maintainers life
for:security
Improves firmware or project security
for:usability
Improves users (and maintainers) life
needs:design
Needs design to make progress
We want the following properties:
cargo update --breaking
inscripts/upgrade.sh
.package.rust-version
and somehow check it (probably run test.sh with the MSRV too)See rust-lang/cargo#14372 for more information.
Useful tools:
cargo
,cargo-lock
,cargo_metadata
,semver
,tame-index
, andtoml_edit
.Design ideas:
repo.lock
file at the root with a list of packages (name and version), one per compatibility range (see next point). This is the source of truth (Cargo.toml
andCargo.lock
files must comply).struct CompatibilityRange { name: String, first: Version }
with anfn first(&Version) -> Version
to easily talk about compatibility range. We want at most one version per compatibility range in therepo.lock
.Cargo.toml
files must use the default and the version must be the one inrepo.lock
.Cargo.lock
must be the ones inrepo.lock
.Cargo.toml
files if needed (usingtoml_edit
in one go).Cargo.lock
files if needed (can we do it with thecargo
library? or do we need to call thecargo update
tool?). There is a difficulty if usingcargo update
that we want to start from the "roots", otherwise we might want to apply an update that doesn't work.repo.lock
should auto-update if a new compatibility range is needed.(I have some code already.)
The text was updated successfully, but these errors were encountered: