Structured command runner — a clean alternative to make
Project description
Ordo
A structured command runner — a clean alternative to make.
Ordo reads an ordo.yaml config, groups your commands logically, and runs them with a simple group:command syntax. No more flat Makefiles. No more guessing what commands exist.
Why not make?
make |
Ordo | |
|---|---|---|
| Grouped commands | ✗ | ✓ |
| Built-in discovery | ✗ | ✓ |
| Per-command descriptions | ✗ | ✓ |
| Readable config | Makefiles | YAML |
| Typo suggestions | ✗ | ✓ |
Installation
pip install ordo-cli
# or
pipx install ordo-cli
Quick start
Create an ordo.yaml at your project root:
groups:
dev:
description: Local development
commands:
start:
description: Start the API server
run: "uvicorn app.main:app --reload"
reset:
description: Reset local database
run: "python scripts/reset_db.py"
test:
description: Test suite
commands:
run:
description: Run all tests
run: "pytest"
watch:
description: Run tests in watch mode
run: "pytest --watch"
Then:
ordo list # see all commands
ordo dev:start # run one
ordo validate # check your config
CLI reference
ordo list List all commands
ordo list --verbose Also show raw run strings
ordo <group:command> Execute a command
ordo validate Validate ordo.yaml
ordo --version Print version
ordo --help Print help
ordo.yaml reference
groups:
<group-name>:
description: string # optional — shown in ordo list
commands:
<command-name>:
description: string # optional — shown in ordo list
run: string # required — shell command to execute
Naming rules:
- Group and command names: lowercase letters, numbers, hyphens only
- No spaces
- Names must be unique within their scope
All run strings execute via sh -c — pipes, redirects, &&, and env vars all work as expected.
Config discovery
Ordo finds ordo.yaml in this order:
ORDO_CONFIGenvironment variable--configCLI flagordo.yamlin current directory- Walk up the directory tree until
.gitis found
You can run ordo from any subdirectory in your repo — it will find the config.
Error behaviour
- All errors exit with code 1
- Child process exit codes are forwarded exactly
- Typos get a fuzzy suggestion:
Did you mean: dev:start? Ctrl+Ccleanly stops the child process — no zombie processes
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ordo_cli-1.0.1.tar.gz.
File metadata
- Download URL: ordo_cli-1.0.1.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55711adbfe1bc6106421852a3f6d6070de954697cd3f81b1a787fc7cec0891e1
|
|
| MD5 |
4722617325cbf5b825ee0102d717e7b3
|
|
| BLAKE2b-256 |
9c2ba578ced69988f2ff490b76ae23b54621d6eb453aa27dfc9ec5b6ecfda9f4
|
File details
Details for the file ordo_cli-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ordo_cli-1.0.1-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
591ccf11a06c52cf066531911823081755afa2e1bb7ad2ee0e96d15a024be6aa
|
|
| MD5 |
726b24e886ffc1188ae245d106ffc772
|
|
| BLAKE2b-256 |
1852534bb45476e7dfc9d48f9f48e6bed05df9e2135416f711185e95b060d3cc
|