aquaproj / aqua

Declarative CLI Version manager written in Go. Support Lazy Install, Registry, and continuous update with Renovate. CLI version is switched seamlessly
https://aquaproj.github.io
852 stars 39 forks source link

Add a command to check for updates #3205

Open mpal9000 opened 1 day ago

mpal9000 commented 1 day ago

Feature Overview

It would be nice to have an aqua check updates or aqua outdated command, that would check for available newer versions of all/installed tools, without applying the updates. For the tools that use semver it could print current, new and latest versions.

Why is the feature needed?

It is convenient to be able to check from the command line, if any of the installed tools has a newer version published. Also the exit code can be used to do some action.

Workaround

aqua list | aqua generate -f -, but the output is not optimal and doesn't work when checking only for --installed tools (#3201).

Example Code

No response

Note

No response

suzuki-shunsuke commented 1 day ago

Thank you for your proposal. After checking updates, what do you do? This question is important to decide the feature you really need and the format of output. If you simply update tools, aqua up is enough. Do you want to run the command for any automation? If so, what format do you expect? Or do you expect human friendly output? Do you want to read release note or something to judge if you update tools?

the exit code can be used to do some action.

It seems that you want to do some automation. Do you expect the exit code is non zero if some tools are updated?

mpal9000 commented 1 day ago

Currently I need the command to know if there are any updates, by reading some human friendly output. I integrate "check update" commands of other tools I use, like my system's package manager and check if my system needs any update as a whole. Then I update my system as a whole via different package/version/plugin managers. The order of running those update commands can be important. For example the system packages can be dependencies of tools I install via aqua. Dependencies that aqua (and other similar tools) don't/won't manage. Or the aqua tools can be dependencies of plugins I install via my editors plugin manager. Using a system with rolling releases, requires a more careful update process. Regarding the action triggering, the exit code is enough most of the times. In general the output of a command should be human friendly and available also as structured (e.g. JSON) via a command line option (if needed). Currently I don't need a structured output, just writing what I use/see in other CLIs. An example of an automation using the exit code is notifying the system administrator about available updates.