{"id":23038785,"url":"https://github.com/kauefraga/ruke","last_synced_at":"2025-07-13T04:33:27.882Z","repository":{"id":233332899,"uuid":"785456932","full_name":"kauefraga/ruke","owner":"kauefraga","description":"A dead-simple automation tool. Inspired by Makefile and Justfile.","archived":false,"fork":false,"pushed_at":"2025-05-13T14:15:39.000Z","size":378,"stargazers_count":31,"open_issues_count":2,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-04T22:49:01.772Z","etag":null,"topics":["automation","cli","monorepo-tooling","rust","toml","tools"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kauefraga.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-04-11T23:21:38.000Z","updated_at":"2025-05-14T19:01:53.000Z","dependencies_parsed_at":"2024-05-08T21:45:59.691Z","dependency_job_id":"5ac4a285-acf3-417b-a7f5-e8199caa2d5c","html_url":"https://github.com/kauefraga/ruke","commit_stats":null,"previous_names":["kauefraga/ruke"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/kauefraga/ruke","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauefraga%2Fruke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauefraga%2Fruke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauefraga%2Fruke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauefraga%2Fruke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kauefraga","download_url":"https://codeload.github.com/kauefraga/ruke/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kauefraga%2Fruke/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264506671,"owners_count":23619056,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","cli","monorepo-tooling","rust","toml","tools"],"created_at":"2024-12-15T18:25:26.422Z","updated_at":"2025-07-13T04:33:27.848Z","avatar_url":"https://github.com/kauefraga.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `ruke`\n\n[![Crates.io Version](https://img.shields.io/crates/v/ruke)](https://crates.io/crates/ruke)\n[![Crates.io Total Downloads](https://img.shields.io/crates/d/ruke)](https://crates.io/crates/ruke)\n[![GitHub's license](https://img.shields.io/github/license/kauefraga/ruke)](https://github.com/kauefraga/ruke/blob/main/LICENSE)\n[![GitHub last commit (branch)](https://img.shields.io/github/last-commit/kauefraga/ruke/main)](https://github.com/kauefraga/ruke)\n\n\u003e A dead-simple automation tool. Inspired by Makefile and Justfile.\n\n\u003e [!TIP]\n\u003e Looking for a Dockerfile/docker-compose.yml generator? [gorvus](https://github.com/FelipeMCassiano/gorvus) is waiting for you!\n\n\u003cdiv align='center'\u003e\n    \u003cimg src='.github/demo.gif' alt='a demonstration of ruke operations' /\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\nRuke is a **command runner** designed to be easy to configure and even easier to use. Ruke leverages Rust and TOML to provide such smoothness.\n\n## 🔑 Key Features\n\n- Fancy interface: good experience, clear instructions and colored texts are what you get.\n- Lightning speed: written in Rust, when you run it, it looks like a rocket.\n- Easy configuration: unlike other command runners, Ruke uses TOML so you don't need to learn a new language.\n\n## 🛠 Usage\n\nruke can be used in 2 easy steps:\n\n1. Install binary\n2. Configure your tasks\n\n### Installation\n\nI highly recommend you to install ruke via Cargo.\n\n```sh\ncargo install ruke\n```\n\nIf you don't have a Rust setup, you can install via the install script of your platform:\n\n\u003cdetails\u003e\n\u003csummary\u003eLinux / WSL and MacOS (Darwin)\u003c/summary\u003e\n\n\u003e ```sh\n\u003e curl -sSfL https://raw.githubusercontent.com/kauefraga/ruke/main/install.sh | sh\n\u003e ```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWindows\u003c/summary\u003e\n\n\u003e ```sh\n\u003e Invoke-WebRequest https://raw.githubusercontent.com/kauefraga/ruke/main/install.ps1 | iex\n\u003e ```\n\n\u003c/details\u003e\n\n### Getting Started\n\nFirst things first, you need to define your tasks in a `Ruke.toml` file.\n\nHopefully, Ruke can help you, just run\n\n```sh\nruke init\n```\n\nWith your `Ruke.toml` ready, now you need to run a specific task.\n\nThe syntax for running a task is `ruke [target]` where target is the task you wanna execute. Try this:\n\n```sh\nruke\n```\n\n**Obs**.: the target task \"main\" is the default, therefore if you run `ruke`, it's the same as running `ruke main`.\n\n### Mastering the CLI\n\n###### Available commands\n\n- `ruke init` - Create a `Ruke.toml` file with a task within\n- `ruke list` - List existing tasks\n- `ruke new` - Create a new task (interactive mode)\n- `ruke add` - Add a command to an existing task (interactive mode)\n- `ruke remove` - Remove an existing task (interactive mode)\n- `ruke [target]` - Run a specific task\n\n###### Aliases\n\n- `ruke init`, `ruke i`\n- `ruke list`, `ruke ls`\n- `ruke new`, `ruke n`\n- `ruke add`, `ruke a`\n- `ruke remove`, `ruke rm`\n\n###### Arguments and flags\n\n| Command         | Flags                                                            |\n|-----------------|------------------------------------------------------------------|\n| `ruke init`     | doesn't have flags                                               |\n| `ruke list`     | `-m --minimal`, `-f --file \u003cFILE\u003e`                               |\n| `ruke new`      | `-n --name \u003cNAME\u003e`, `-f --file \u003cFILE\u003e`                           |\n| `ruke add`      | `-n --name \u003cNAME\u003e`, `-c --command \u003cCOMMAND\u003e`, `-f --file \u003cFILE\u003e` |\n| `ruke remove`   | `-n --name \u003cNAME\u003e`, `-f --file \u003cFILE\u003e`                           |\n| `ruke [target]` | `-q --quiet`, `-f --file \u003cFILE\u003e`                                 |\n\nIf you run `ruke --help` you'll see nice guide, and if you want help for a specific command, try `ruke help [command]`.\n\n###### Examples\n\nOutput less information (just tasks name) than `ruke list`.\n\n```sh\nruke list --minimal\n```\n\nCreate a new task named \"dev:f\".\n\n```sh\nruke new -n \"dev:f\"\n```\n\nAdd commands in the task \"dev:f\".\n\n```sh\nruke add -n \"dev:f\" -c \"cd apps/frontend\"\nruke add -n \"dev:f\" -c \"bun dev\"\n# ruke dev:f\n```\n\nRemove the task \"dev:f\" from the Ruke.toml at an unexpected directory.\n\n```sh\nruke remove -n \"dev:f\" -f path/to/Ruke.toml\n```\n\nRun the task \"def:f\" and show you the outputs.\n\n```sh\nruke dev:f\n```\n\nOr `ruke dev:f -q` if you don't want to see outputs (`-q --quiet`).\n\n### Mastering the Ruke file\n\nI 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 \u003cFILE\u003e` flag.\n\nLook at [the full spec of TOML v1.0.0](https://toml.io/en/v1.0.0).\n\n```toml\n[tasks.main]                       # defines a task with an unique name\ncommands = [\"go run cmd/main.go\"]  # defines a command array to be executed sequentially\n\n[tasks.\"dev:f\"]\ncommands = [\"cd apps/frontend\", \"bun dev\"]\n\n[tasks.\"start:b\"]\ncommands = [\"cd apps/backend\", \"bun run build\", \"bun start\"]\n\n[tasks.build]\ncommands = [\"go build -o gorvus cmd/main.go\", \"./gorvus\"]\n```\n\n## 💖 Contributing\n\nFeel free to contribute, create an issue to report a bug, suggest an API change, an improvement or a feature.\n\n### How to contribute\n\n1. Fork this repository\n2. Clone your fork on your machine\n3. Make your changes, commit and push these\n4. Open a pull request (write a descriptive message about what you changed)\n\n### Contributors\n\nThanks goes to these amazing people:\n\n[![notshwuy GitHub profile picture](https://github.com/notshwuy.png?size=50)](https://github.com/notshwuy)\n[![FelipeMCassiano GitHub profile picture](https://github.com/FelipeMCassiano.png?size=50)](https://github.com/FelipeMCassiano)\n\n## 📝 License\n\nThis project is licensed under the MIT License - See the [LICENSE](https://github.com/kauefraga/ruke/blob/main/LICENSE) for more information.\n\n---\n\nMade with ❤ and 🦀 by Kauê Fraga Rodrigues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkauefraga%2Fruke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkauefraga%2Fruke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkauefraga%2Fruke/lists"}