Allows to create per-directory overrides for your toolchain binaries of expected versions. E.g. you may say that java should point to AdoptOpenJDK 11 when invoked in directory ~/work/my-project.
Warning: this is a work-in-progress project, user experience may be a bit unpleasant for now
- Other binary dependency managers (
jenv,sdkman) rely onPATHmangling and need to be integrated with your shell thus need to be configured separatedly and work differently when you run your scripts/projects different ways. - GraalVM overrides some binaries (like
node) and it's hard to fix that.
binlink does not rely on shell-level PATH mangling. It maintains a list of symlinks to itself and uses execve in order to substitue itself with an appropriate binary. That makes it shell-independent.
brew tap 7mind/tools
brew install binlink
binlink link
echo 'PATH=/usr/local/bin/binlinks/:${PATH}' >> ~/.zshrcthen
cd ~/work/project
binlink example > .binlink.toml
nano .binlink.toml default config path is ~/.config/binlink/binlink.toml.
Local config would always work as overlay.