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.rsfn 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.
-
Actions
An action is a maintenance task in a Rust library crate. Use an existing action or write one for your workflow.
-
The Harness
A harness is a small binary crate in your project. Add the actions you want, and Rakko gives each one a command.
-
Bundles
A bundle packages a set of actions. Add the set to your harness at once, or choose the actions you need.
-
Updates
Let your dependency bot open a pull request for a new action release. Review the update and its CI results before you merge.
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.