Rakko

Rakko Project Maintenance as Rust Crates

Turn your maintenance tasks into Rust crates. Run them from one command line, share them across projects, and update them like any other dependency.

Use mise to install Rust and the tools your actions need.

tools/rakko/Cargo.toml
[dependencies]
rakko-cli = "0.1"
rakko-format-rust = "0.1"
rakko-lint-rust = "0.1"
rakko-test-rust = "0.1"
tools/rakko/src/main.rs
fn main() -> std::process::ExitCode {
    rakko_cli::builder()
        .mount(rakko_format_rust::FormatRust)
        .mount(rakko_lint_rust::LintRust)
        .mount(rakko_test_rust::TestRust)
        .run()
}
mise run rakko -- format-rust --fix

How Rakko Works

You fix a maintenance script in one project, then copy the fix to the others. With Rakko, each task is a versioned crate. Release the fix once, and let projects adopt it through dependency updates.

Rakko, Mise, and Clawless

Rakko defines and runs your maintenance tasks. Clawless provides the command line, and mise installs the tools.

  1. Clawless provides the command line, with help text and shared output flags.
  2. Rakko defines actions and groups, and runs the tasks your harness selects.
  3. mise installs linters, formatters, and other tools at the versions your actions require.

Your Own Actions

Aonyx uses Rakko internally and builds actions for its own projects. You are welcome to try them and use the ones that fit your workflow.

We encourage you to build your own actions too. They can reflect your team’s conventions or leave more choices to each project. An action is an ordinary Rust crate that you can test with Rakko’s helpers and publish for others to use.

Documentation