nabijaczleweli / cargo-update

A cargo subcommand for checking and applying updates to installed executables
MIT License
1.22k stars 42 forks source link

Ability to ignore/blacklist certain crates - wrong version detected in Deno #146

Closed MariusVB closed 4 years ago

MariusVB commented 4 years ago

Hi,

Thanks for a great extension!

I've been trying to use cargo update for the past weeks, it works perfect for most packages, however I keep running into an issue with the deno package. I get an error whenever cargo-update chooses to update deno, but I can update just fine with deno upgrade. After using deno upgrade, cargo-update doesn't recognize that Deno now is the latest version and tries to update it again, failing.. This blocks the rest of the updates that are queued for update in the cargo-install update -a command.

It would be great if you could look into this issue.

I also thought of a feature request where you could ignore or blacklist certain crates, so if something like this happens or there exists a crate which you do not want to update, you could add them to the ignore-list or blacklist. Would that be possible?

nabijaczleweli commented 4 years ago

"deno" is, I'm assuming, https://github.com/denoland/deno?

How do you upgrade this "deno" thing for it to not be picked up? Do you have a transcript of such a failed attempt?

MariusVB commented 4 years ago

Yes, thats the one.

Deno has a built-in "deno upgrade" which does the job. Deno is a single binary file, so might be hard for Cargo to detect the version, if the update is not performed by Cargo itself.

Here's the error:

image

MariusVB commented 4 years ago

Seems there are two issues. One is a compiling issue in my rust install, and the other is a version issue with cargo or cargo-update. First one has nothing to do with this module, I just needed a newer rustc version. However the second one could use some investigating.

nabijaczleweli commented 4 years ago

You're right on the first part. As for the second, it seems like, either (a) deno is not supposed to be managed by Cargo and Cargo-compliant tooling, or (b) it is, and the updater sucks.

In the former case: remove the deno line from ~/.cargo/.crates.toml. In the latter: https://github.com/denoland/deno/issues/7802

As for the exclusion thing: you can do this with shell substitution for now, but sure, why not?

MariusVB commented 4 years ago

Thanks! I'll keep my deno separate from cargo and just use the builtin deno upgrade.

Great work.