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

Read/write the encoded cargo update --precise in the same place #12629

Merged
merged 1 commit into from
Sep 6, 2023

Conversation

Eh2406
Copy link
Contributor

@Eh2406 Eh2406 commented Sep 6, 2023

What does this PR try to resolve?

There's a stringly typed interface between

format!("{}={}->{}", dep.name(), dep.version(), precise)
and
// `<pkg>=<p_req>o-><f_req>` where `<pkg>` is the name of a crate on
, the only reason I found it with by finding the original commit #5205

As far as I can tell, anyone could just create this internally meaningful structure string by passing it on the command line.

This should get cleaned up, for now by moving the encoding and decoding in to the same file.

How should we test and review this PR?

Internal refactor and test still pass.

Additional information

I am hoping that in the redesign of cargo update we can come up with a better design for smuggling this data from the API all the way to querying the registry. It seems like locking the dependency to the selected version would be conceptually simpler, or using the patch system, or something.

@rustbot
Copy link
Collaborator

rustbot commented Sep 6, 2023

r? @ehuss

(rustbot has picked a reviewer for you, use r? to override)

@rustbot rustbot added A-registries Area: registries Command-generate-lockfile S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 6, 2023
/// If so return the version currently in the lock file and the version to be updated to.
/// If specified, our own source will have a precise version listed of the form
// `<pkg>=<p_req>-><f_req>` where `<pkg>` is the name of a crate on
// this source, `<p_req>` is the version installed and `<f_req> is the
Copy link
Contributor

Choose a reason for hiding this comment

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

<f_req> doesn't have a closing back tick

Comment on lines 447 to 450
/// Check if the precise data field stores information for this `name`
/// from a call to [with_precise_registry_version].
/// If so return the version currently in the lock file and the version to be updated to.
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: a newline between short description and the rest

Comment on lines 461 to 463
.filter(|p| p.starts_with(name) && p[name.len()..].starts_with('='))
.map(|p| {
let (current, requested) = p[name.len() + 1..].split_once("->").unwrap();
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: this could be simplified

.filter_map(|p|p.strip_prefix(name)?.strip_prefix('='))`

Copy link
Contributor

@epage epage left a comment

Choose a reason for hiding this comment

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

All minor so feel free to r= me when you feel its ready

@Eh2406
Copy link
Contributor Author

Eh2406 commented Sep 6, 2023

@bors r=epage

@bors
Copy link
Contributor

bors commented Sep 6, 2023

📌 Commit 4d63fbc has been approved by epage

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 6, 2023
@bors
Copy link
Contributor

bors commented Sep 6, 2023

⌛ Testing commit 4d63fbc with merge 016fe19...

@bors
Copy link
Contributor

bors commented Sep 6, 2023

☀️ Test successful - checks-actions
Approved by: epage
Pushing 016fe19 to master...

@bors bors merged commit 016fe19 into rust-lang:master Sep 6, 2023
@Eh2406 Eh2406 deleted the WhyStringlyTyped branch September 7, 2023 17:48
bors added a commit that referenced this pull request Sep 7, 2023
Ues strip_prefix for cleaner code

### What does this PR try to resolve?

In #12629 (review) Ed pointed out how much cleaner the code can be using `strip_prefix`, so I found a bunch more places where we should be using it.

### How should we test and review this PR?

Internal refactor and test still pass.
bors added a commit that referenced this pull request Sep 8, 2023
Ues strip_prefix for cleaner code

### What does this PR try to resolve?

In #12629 (review) Ed pointed out how much cleaner the code can be using `strip_prefix`, so I found a bunch more places where we should be using it.

### How should we test and review this PR?

Internal refactor and test still pass.
bors added a commit to rust-lang-ci/rust that referenced this pull request Sep 9, 2023
Update cargo

14 commits in d14c85f4e6e7671673b1a1bc87231ff7164761e1..2fc85d15a542bfb610aff7682073412cf635352f
2023-09-05 22:28:10 +0000 to 2023-09-09 01:49:46 +0000
- feat: Stabilize lints (rust-lang/cargo#12648)
- Ues strip_prefix for cleaner code (rust-lang/cargo#12631)
- fix: don't print _TOKEN suggestion when not applicable (rust-lang/cargo#12644)
- Bump cargo-credential-1password to v0.4.0 (rust-lang/cargo#12641)
- refactor: put `Source` trait under `cargo::sources` (rust-lang/cargo#12527)
- Error out if `cargo clean --doc` is mixed with `-p`. (rust-lang/cargo#12637)
- Add wrappers around std::fs::metadata (rust-lang/cargo#12636)
- Add with_stdout_unordered. (rust-lang/cargo#12635)
- Fix example for creating a git project test. (rust-lang/cargo#12632)
- Read/write the encoded `cargo update --precise` in the same place (rust-lang/cargo#12629)
- docs(guide): Apply feedback on CI (rust-lang/cargo#12630)
- fix: improve warning for both token & credential-provider (rust-lang/cargo#12626)
- Skip clean up `profile.release.package."*"` (rust-lang/cargo#12624)
- Add MSRV validation GitHub Action for cargo-credential (rust-lang/cargo#12623)
@ehuss ehuss added this to the 1.74.0 milestone Sep 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-registries Area: registries Command-generate-lockfile S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants