Aftman is a toolchain manager. It enables installing project-specific command line tools and switching between them seamlessly.
```bash $ rojo --version Rojo 6.2.0
$ cat ~/.aftman/aftman.toml [tools] rojo = "rojo-rbx/rojo@6.2.0"
$ cd uses-rojo-7 $ rojo --version Rojo 7.1.0
$ cat aftman.toml [tools] rojo = "rojo-rbx/rojo@7.1.0" ```
Aftman supports:
You can install Aftman by downloading a pre-built binary for your platform from Aftman's GitHub Releases Page.
Once you have the release unzipped, run:
bash
./aftman self-install
This will install Aftman to its own bin directory and update your system's PATH
environment variable for you.
To create a new aftman.toml
file in your current directory, run
bash
aftman init
To add a new tool, you can follow the instructions in the file, or run
```bash aftman add rojo-rbx/rojo
aftman add rojo-rbx/rojo@6.2.0
aftman add BurntSushi/ripgrep rg ```
If your PATH is configured correctly (see Installation), you will now be able to run that tool from your project.
To install a tool system-wide so that it can be used anywhere, edit ~/.aftman/aftman.toml
or run
bash
aftman add --global rojo-rbx/rojo
To install all tools listed by your aftman.toml
files, run
bash
aftman install
For detailed help information, run aftman --help
.
aftman init
Usage:
bash
aftman init [path]
Creates a new aftman.toml
file in the given directory. Defaults to the current directory.
aftman add
Usage:
bash
aftman add [--global] <tool-spec> [tool-alias]
Installs a new tool with the given tool spec and optional alias to use for installing the tool.
Examples:
```bash
aftman add rojo-rbx/rojo
aftman add --global rojo-rbx/rojo
aftman add rojo-rbx/rojo@6.2.0
aftman add rojo-rbx/rojo@6.2.0 rojo6 ```
aftman install
Usage:
bash
aftman install [--no-trust-check]
Install all tools listed in aftman.toml
files based on your current directory.
If --no-trust-check
is given, all tools will be installed, regardless of whether they are known. This should generally only be used in CI environments. To trust a specific tool before running aftman install
, use aftman trust <tool>
instead.
aftman self-install
Usage:
bash
aftman self-install
Installs Aftman, upgrades any references to Aftman, and adds aftman
to your system PATH
if supported.
Whenever you upgrade Aftman, run this command. Aftman makes copies of itself to mimic the tools it installs, and this command will ensure those copies get updated as well.
aftman trust
Usage:
bash
aftman trust <tool-name>
Adds a tool to the list of trusted tools.
Aftman prompts the user before installing new tools. Running aftman trust
beforehand skips this prompt. This is useful when running automation that depends on a tool from a known location.
aftman list
Added in Aftman 0.2.6.
Usage:
bash
aftman list
Lists all tools currently managed by Aftman.
aftman update
This subcommand is not yet implemented.
Aftman is spiritually very similar to [Foreman], a project I created at Roblox.
I'm hoping to fix some of the core design mistakes I made in Foreman and also take a little more care with the codebase. Roughly:
Result::unwrap
liberally, Aftman has good error hygiene with helpful context attached.Aftman is available under the terms of the MIT license. See https://opensource.org/licenses/MIT or LICENSE for details.