asdf-vm / asdf-vm/asdf

Interactive `.tool-version` updates

Open
#1,235 6 comments 6 reactions 0 assignees View on GitHub
enhancement
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:

![](https://user-images.githubusercontent.com/201034/169978025-e2fc8a69-e2aa-43ee-8275-1bad5b1beb16.png)

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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.