Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

suggest unlocking locked pkgs that cause dep resolution failures #3970

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

raquentin
Copy link
Contributor

@raquentin raquentin commented Dec 8, 2024

Resolves #3622

Changes:

  • expanded Error::dependency_resolution_failed to detect dependency resolution failures due to locked packages in two ways
  • the first involves ResolutionError::NoSolution. These are errors where a locked package version is incompatible with a new package added via gleam add or via a manual gleam.toml update and gleam deps download AND the locked package is not constrained in manifest.toml. More manual testing is needed for the larger cli interactions. resolution_locked_version_doesnt_satisfy_requirements_indirect tests this case.
  • the second is when a version in the locked map is not in the range specified in requirements. resolution_locked_version_doesnt_satisfy_requirements tests this case.
  • added a new error variant DependencyResolutionFailedWithLocked to allow pattern matching later to start the CLI action (waiting for user to [y/n] the suggestion)

Questions for reviewers:

  • Can you look over the wording of error messages
  • Do you want to unit test the integration the new CLI dialogue? If so is there a similar example already in the codebase? Would've done it by default if I had a clearer plan for setting env vars and interacting w/ stdin
    Ty

.iter()
.map(|(name, package)| (name.clone(), package.to_hex_package(name)))
.collect();

let resolved = dependency::resolve_versions(
let root_requirements_clone = root_requirements.clone();
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking for suggestions of better designs for this section. Cloning for use in calling the function recursively on the should_try_unlock page feels a bit gross

vec![Diagnostic {
title: "Dependency resolution with a locked package".into(),
text,
hint: Some("Try removing locked version(s) in your manifest.toml and re-run the command.".into()),
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A bit redundant, could remove, lmk

@raquentin raquentin marked this pull request as ready for review January 2, 2025 00:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Offer to attempt again with conflicting deps unlocked when version resolution fails
1 participant