asdf 0.16.0+ `asdf shell` alternative
- 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
Before 0.16.0, it was quite handy to be able to set a version for the current shell session. e.g. for no downtime ruby deployments, I could install the new ruby version, use `asdf shell` to switch to it without the current shell, and install the required rubygems via bundler before switching our app over to use it.
### Describe the proposed solution
Reimplement `asdf shell` (or `asdf set --shell`) so that asdf versions can be overwritten for the current shell environment
### Describe similar `asdf` features and why they are not sufficient
With `asdf shell` gone, the only solution is to use `asdf set`, which overwrites tool-versions, which means when the application next boots up or scales up automatically, it uses the changed ruby version which might not be ready yet.
### Describe other workarounds you've considered
I guess a work around would be to make a new directory, create a tool-versions there, a copy over the Gemfile and Gemfile.lock, but this is cumbersome compared to a quick `asdf shell ruby 3.4.1` (or using the new set, `asdf set --shell ruby 3.4.1`)
Contributor guide
Research direction
Start by tracing the existing `asdf set` and shell-command handling, focusing on how versions are resolved and exported to the current shell. Implement the requested `asdf shell` or `asdf set --shell` behavior without changing the project’s tool-versions, then verify that the selected version applies only to the current shell session.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- shell
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100