gitmyhub

sdkman-cli

Shell ★ 6.8k updated 4d ago

The SDKMAN! Command Line Interface

A command-line tool for installing and switching between multiple versions of developer tools like Java and Kotlin on Linux and macOS using a single `sdk` command, note the core is being rewritten in Rust.

ShellGradleCucumberRustsetup: easycomplexity 2/5

SDKMAN is a command-line tool for managing multiple versions of software development kits on Unix-based systems, including Linux and macOS. The problem it solves is a common one for developers: different projects often require different versions of the same tool, such as Java or Kotlin, and switching between them by hand is tedious and error-prone. SDKMAN lets you install as many versions as you need and switch between them with a single command.

Installation is a one-liner run in a terminal: a small script is downloaded and executed, and SDKMAN sets itself up automatically. After that, you can use the sdk command to install a tool, list available versions, switch the active version, or remove one you no longer need. The full catalog of supported tools is listed on the SDKMAN website rather than in this repository.

The README includes an important notice: the project is currently being rewritten in Rust under a separate repository. The shell-based codebase here will eventually become a thin launcher for those new Rust commands. At this point, only bug fixes are accepted in this repository, not new features, so the shell code should be considered in maintenance mode.

For developers who want to contribute or run the tests, the project uses Gradle and writes its tests in a format called Cucumber, which describes expected behavior in plain-language scenarios. A JDK 11 installation is required for development work.

The project is open-source and supported by backers and sponsors through Open Collective, with backend services hosted on DigitalOcean. The README does not include a license section, so license terms would need to be checked in the repository files directly.

Where it fits