A dead-simple automation tool. Inspired by Makefile and Justfile.
Tip
Looking for a Dockerfile/docker-compose.yml generator? gorvus is waiting for you!
Ruke is a command runner designed to be easy to configure and even easier to use. Ruke leverages Rust and TOML to provide such smoothness.
- Fancy interface: good experience, clear instructions and colored texts are what you get.
- Lightning speed: written in Rust, when you run it, it looks like a rocket.
- Easy configuration: unlike other command runners, Ruke uses TOML so you don't need to learn a new language.
ruke can be used in 2 easy steps:
- Install binary
- Configure your tasks
I highly recommend you to install ruke via Cargo.
cargo install ruke
If you don't have a Rust setup, you can install via the install script of your platform:
Linux / WSL and MacOS (Darwin)
curl -sSfL https://raw.githubusercontent.com/kauefraga/ruke/main/install.sh | sh
Windows
Invoke-WebRequest https://raw.githubusercontent.com/kauefraga/ruke/main/install.ps1 | iex
First things first, you need to define your tasks in a Ruke.toml
file.
Hopefully, Ruke can help you, just run
ruke init
With your Ruke.toml
ready, now you need to run a specific task.
The syntax for running a task is ruke [target]
where target is the task you wanna execute. Try this:
ruke
Obs.: the target task "main" is the default, therefore if you run ruke
, it's the same as running ruke main
.
ruke init
- Create aRuke.toml
file with a task withinruke list
- List existing tasksruke new
- Create a new task (interactive mode)ruke add
- Add a command to an existing task (interactive mode)ruke remove
- Remove an existing task (interactive mode)ruke [target]
- Run a specific task
ruke init
,ruke i
ruke list
,ruke ls
ruke new
,ruke n
ruke add
,ruke a
ruke remove
,ruke rm
Command | Flags |
---|---|
ruke init |
doesn't have flags |
ruke list |
-m --minimal , -f --file <FILE> |
ruke new |
-n --name <NAME> , -f --file <FILE> |
ruke add |
-n --name <NAME> , -c --command <COMMAND> , -f --file <FILE> |
ruke remove |
-n --name <NAME> , -f --file <FILE> |
ruke [target] |
-q --quiet , -f --file <FILE> |
If you run ruke --help
you'll see nice guide, and if you want help for a specific command, try ruke help [command]
.
Output less information (just tasks name) than ruke list
.
ruke list --minimal
Create a new task named "dev:f".
ruke new -n "dev:f"
Add commands in the task "dev:f".
ruke add -n "dev:f" -c "cd apps/frontend"
ruke add -n "dev:f" -c "bun dev"
# ruke dev:f
Remove the task "dev:f" from the Ruke.toml at an unexpected directory.
ruke remove -n "dev:f" -f path/to/Ruke.toml
Run the task "def:f" and show you the outputs.
ruke dev:f
Or ruke dev:f -q
if you don't want to see outputs (-q --quiet
).
I suggest you to use one of these two names: Ruke.toml
or Rukefile
, however, as long as you write a valid TOML, you can name the file whatever you want and pass it with the -f --file <FILE>
flag.
Look at the full spec of TOML v1.0.0.
[tasks.main] # defines a task with an unique name
commands = ["go run cmd/main.go"] # defines a command array to be executed sequentially
[tasks."dev:f"]
commands = ["cd apps/frontend", "bun dev"]
[tasks."start:b"]
commands = ["cd apps/backend", "bun run build", "bun start"]
[tasks.build]
commands = ["go build -o gorvus cmd/main.go", "./gorvus"]
Feel free to contribute, create an issue to report a bug, suggest an API change, an improvement or a feature.
- Fork this repository
- Clone your fork on your machine
- Make your changes, commit and push these
- Open a pull request (write a descriptive message about what you changed)
Thanks goes to these amazing people:
This project is licensed under the MIT License - See the LICENSE for more information.
Made with ❤ and 🦀 by Kauê Fraga Rodrigues.