Interactive `.tool-version` updates
- Dominant language
- Go
- Stars
- 25.6k
- Forks
- 941
- Avg merge
- 9h 24m
- Merged PRs (30d)
- 3
Description
### Is your feature request related to a problem? Please describe
If you like to use latest-and-greatest, updating `.tool-versions` files with the right versions of individual tools can get pretty tedious.
### Describe the proposed solution
The Yarn package manager for JavaScript has an [`upgrade-interactive` command](https://yarnpkg.com/cli/upgrade-interactive) that provides a list of radio buttons for available upgrades. Here's an (outdated) example from a random blog post about it:

I think this would be a good fit for asdf as well. Ultimately, I feel like it's a phase in the life of every package manager out there.
To get a feel for it, I wrote [`asdf-bump`](https://github.com/timdp/asdf-bump) in JS. It's just a proof of concept but it does work for me. (I initially wanted to create a PR but as comfortable as I am with Bash, it was a lot easier to do in JS.)
### Describe similar `asdf` features and why they are not sufficient
* `asdf update` updates asdf itself.
* `asdf list all ` lists upgrades but doesn't apply them.
* `asdf latest ` shows the latest version. You may not want the very latest one though. For example, with Node.js, you may want the latest version under the 16.x branch.
### Describe other workarounds you've considered
I think the only workaround is the manual approach, which is labor-intensive.
Contributor guide
Research direction
Start by reading the linked asdf-bump proof of concept and comparing its behavior with `asdf list all ` and `asdf latest `. Done means an interactive upgrade flow lets users choose versions, including non-latest compatible choices, and writes the selected changes to `.tool-versions`.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, shell
- Domain
- cli, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 28/100