Skip to content
This repository was archived by the owner on Nov 27, 2025. It is now read-only.
/ binlink Public archive

7mind/binlink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Test Release

binlink

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

Why?

  1. Other binary dependency managers (jenv, sdkman) rely on PATH mangling 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.
  2. 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.

TLDR

brew tap 7mind/tools
brew install binlink

binlink link
echo 'PATH=/usr/local/bin/binlinks/:${PATH}' >> ~/.zshrc

then

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.

See also

About

Proper shell-free alternative for SDKMAN/jenv/jabba/etc

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Packages

 
 
 

Contributors

Languages