Usage

Once installed, curo provides a simple, unified CLI for common development workflow tasks. Typical commands are:

curo build         # Build your project or component(s)
curo test          # Run tests
curo deploy        # Deploy built artifacts

You can always see the available actions by running:

curo --help

Command Structure

Every invocation follows one grammar:

curo [flags] <action> [component-path] [-- args...]
  • <action>: one of the standard actions below, as a single token.
  • [component-path]: optionally target one component, addressed by a slash path such as curo/cli. No path means the whole tree from the root.
  • [-- args...]: everything after -- is passed through to the underlying command untouched.
  • flags can go anywhere; see Advanced Usage.

The Actions

The action vocabulary is fixed. Every action has a short alias.

ActionAliasMeaning
installiInstall the environment
buildbBuild some code
lintlCheck for linting and typing code
formatfFormat some code
generategGenerate code from a template or specification
cleancClean up the environment
startstStart an application detached
runrnExecute and tail an application
stopspStop a detached application
restartrQuickly restart an application
statusssCheck whether any applications are running
testtTest some code
loglgTail the logs of a running application
publishpPublish an artifact
deploydDeploy the artifact

There are no user-defined actions. If a component needs a command, it lives under one of these names.

Common Workflow

  1. Install project dependencies

    curo install
    
  2. Build the project

    curo build
    
  3. Run tests

    curo test
    
  4. Start your project

    curo start
    

Targeting a Component

Component paths are single tokens with slashes, and they tab-complete:

curo build curo/cli
curo start backend/server

Test Sublevels

test is the one action that fans out. A bare curo test runs every defined sublevel in order: unit, integration, then functional. Select one with a dotted token:

curo test.unit
curo test.functional backend/server

Skip a sublevel from the fan-out with --without:

curo test --without functional

Chaining Commands

Chain additional action tokens onto one invocation with -n/--and:

curo format -n lint -n build -n test.unit

Passing Extra Arguments

Everything after -- goes to the resolved command verbatim, where the manifest chooses to use it:

curo test.functional curo/cli -- -k test_smoke
curo deploy curo/cli -- prod

Deploy and publish targets are deliberately arguments, not configuration: the script owns target validation.