rsdk is a from-scratch rewrite of the otherwise excellent SDKMAN JVM tool manager.
The problem with SDKMAN is that it's made mostly of bash scripts, limiting its portability to other shells and non-Unix OS.
Because rsdk is a self-contained executable, it works the same everywhere and does not require additonal plugins or packages to be installed.
rsdk integrates with bash, zsh, powershell, and fish shells, on Windows, Linux and Mac.
rsdk is does not require curl, zip or any other package to run.
rsdk is an alternative client, it still relies on SDKMAN indexes and downloads.
rsdk does not try to replicate all of SDKMAN:
- no offline mode
- some commands are different
- tools are installed in the
~/.rsdk/toolsfolder
rsdk uses shell-specific wrappers that delegate operations to the binary.
This is because rsdk can not directly set the environment of the underlying shell session,
it prints out set commands to a temp file that is executed by the shell-specific wrapper scripts after rsdk exits.
(If you know a better way to change the parent environement, please let me know how!)
Unfortunately, installing rsdk from source is the only way for now (TODO package managers).
Because rsdk is compiled, installing it requires Rust to be installed.
(I know I said that rsdk didn't need other stuff to be installed first. I lied.)
git clone https://github.com/fralalonde/rsdk.git
Then from the new rsdk directory, run the appropriate install script:
| Shell | Command |
|---|---|
| Powershell | .\dev\Install-Module.ps1 |
| Bash | . dev/install-bash |
| Zsh | . dev/install-zsh |
| Fish | . dev/install-fish |
Append --debug to any install script for a debug build - faster compile, better stack traces, slower archive extraction.
rsdk deals in tools and versions.
| Shell | Command Format | Examples |
|---|---|---|
| List available tools | rsdk list |
|
| List available tool versions | rsdk list <tool> |
rsdk list java |
| Install default version | rsdk install <tool> |
rsdk install maven |
| Install specific version | rsdk install <tool> <version> |
rsdk install maven 3.9.9 |
| Remove version | rsdk uninstall <tool> <version> |
rsdk uninstall maven 3.9.9 |
| Set default version | rsdk default <tool> <version> |
rsdk default maven 3.9.9 |
| Set active version | rsdk use <tool> <version> |
rsdk use maven 3.9.9 |
| Flush downloads cache | rsdk flush |
|
| Show help | rsdk --help |
Running with --debug enables verbose output and stack traces (equivalent of RUST_BACKTRACE=1 and RUST_LOG=debug).
If proxying is required, rsdk honors the http_proxy and https_proxy environment variables (same as curl).
If required, --insecure disables certificate validation allowing use of self-signed certificates.
I do not have a collection of exotic machines to test on. If you use an architecture that isn't supported,
please add it to the defined PLATFORMs in api.rs and submit a pull request for it.
Alternative shells may require a bit more work to support but are welcome too.
nushell support in particular would be nice.
See issues for a list of planned features.
This is a fun-only project.