rbenv, but for anything
This is an implementation of rbenv that aims to be agnostic about what kind of
software it is managing versions for. With names of configuration files and
variables such as .ruby-version
, RBENV_VERSION
, etc. being configurable,
this project could in theory manage multiple versions of anything and should be
able to replace rbenv, pyenv, phantomenv, nodenv and other rbenv-inspired projects.
Build your own version manager
For example, let's say you want to build pyenv
with this:
-
Clone this project into your GOPATH;
-
Run
make
with appropriate configuration:$ PROGRAM_NAME=pyenv PROGRAM_EXECUTABLE=python make
-
Move the resulting
pyenv
binary somewhere into your PATH; -
Marvel at how you can now run
pyenv version
and other commands. This binary is hardcoded to respect:
.python-version
local files,PYENV_VERSION
,PYENV_ROOT
,PYENV_DIR
.
A work in progress π§
Rbenv commands implemented so far:
-
rbenv
-
rbenv---version
-
rbenv-commands
-
rbenv-completions
-
rbenv-exec
-
rbenv-global
-
rbenv-help
-
rbenv-hooks
β οΈ -
rbenv-init
-
rbenv-local
-
rbenv-prefix
-
rbenv-rehash
-
rbenv-root
-
rbenv-sh-rehash
-
rbenv-sh-shell
-
rbenv-shims
-
rbenv-version
-
rbenv-version-file
-
rbenv-version-file-read
-
rbenv-version-file-write
-
rbenv-version-name
-
rbenv-version-origin
-
rbenv-versions
-
rbenv-whence
-
rbenv-which
Stay tuned.