Skip to main content

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
# or
pipx install ordo

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:

  1. ORDO_CONFIG environment variable
  2. --config CLI flag
  3. ordo.yaml in current directory
  4. Walk up the directory tree until .git is 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+C cleanly stops the child process — no zombie processes

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ordo_cli-1.0.0.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ordo_cli-1.0.0-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file ordo_cli-1.0.0.tar.gz.

File metadata

  • Download URL: ordo_cli-1.0.0.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ordo_cli-1.0.0.tar.gz
Algorithm Hash digest
SHA256 125c414a174c93f5f37b08c24f99e277a8fb7d6a89c4c3dcfe0beccf985c3341
MD5 e47a5192127be5ce187290d182c8c0a0
BLAKE2b-256 1c3d3d3c76747dfaa7e84d975bb9c876b91dc217b275744740932454a58a5d77

See more details on using hashes here.

File details

Details for the file ordo_cli-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ordo_cli-1.0.0-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

Hashes for ordo_cli-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b5975c545592a649d0a40fc71f5ae318e38211082c28f20f3f41299f68db336d
MD5 a22f41a4517be9704e26f6e716a32cb9
BLAKE2b-256 f93c185feda1e1e7907d6d34fae098d23122b89fd5bde4bf34ea18471581a62f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page