-
Notifications
You must be signed in to change notification settings - Fork 917
Description
Is your feature request related to a problem? Please describe
I love asdf because it lets me write self-contained, reproducible projects. First, asdf installs a specific version of a language SDK, and then the language's build tool installs specific versions of dependencies. Users don't need to install the SDK or dependencies by hand.
The one minor problem is that they do have to install asdf by hand! In an ideal world, asdf would already be part of the standard tool set on every base system, just like bash and git. But until we live in that world, it's a manual step.
Describe the proposed solution
A way to remove this step would be for asdf to offer a way to bootstrap itself on a user's machine.
In the Java world, build tools have evolved the (badly named) idea of wrapper scripts:
https://docs.gradle.org/current/userguide/gradle_wrapper.html
https://maven.apache.org/tools/wrapper/
These are shell scripts with minimal dependencies which can download the build tool and make it available, in a clean and controlled way (specific version, installed into a global but versioned cache directory, scoped to the project rather than added to the global path, etc). The idea is that you check the script into your project, then users get it when they clone, which lets them bootstrap the rest.
Would it make sense to have an "asdf wrapper" command, which writes a simple shell script which downloads asdf, installs the necessary plugins, then runs whatever asdf command the user wants?
The workflow on the developer's machine would be something like:
asdf wrapper
git add asdfw
git commit
And on the user's machine:
./asdfw install
Describe similar asdf features and why they are not sufficient
There are no similar features, as far as I know.
Describe other workarounds you've considered
I could write the wrapper script myself.