Zolo is a Simple CLI tool to run tasks defined in YAML or JSON configs.
It defines and runs complex task workflows (e.g., build, test, deploy) with dependencies, retries, and parallel execution.
Developers often write custom scripts for task automation, but managing dependencies and retries can be messy. This package would provide a clean, declarative way to define and run tasks.
- Installation
- Create a Task Configuration File
- Run the CLI Tool
- Expected Output
- Advanced Use Cases
- Key Features
npm i zolo
Example tasks.yaml
:
tasks:
build:
command: "npm run build"
retries: 2 # Retry up to 2 times if the task fails
test:
command: "npm test"
dependsOn: ["build"] # Run "build" task before "test"
deploy:
command: "npm run deploy"
dependsOn: ["test"] # Run "test" task before "deploy"
or
Example tasks.json
:
{
"tasks": {
"build": {
"command": "npm run build",
"retries": 2
},
"test": {
"command": "npm test",
"dependsOn": ["build"]
},
"deploy": {
"command": "npm run deploy",
"dependsOn": ["test"]
}
}
}
zolo --config tasks.yaml
#or
zolo --config tasks.json
When the user runs the CLI tool, they’ll see output like this:
✔ Running task: npm run build
✔ Running task: npm test
✔ Running task: npm run deploy
If a task fails and retries are configured, they’ll see something like this:
✖ Running task: npm run build
⚠ Task failed: npm run build
ℹ Retrying in 1 seconds...
✔ Running task: npm run build (retry 1)
✔ Running task: npm test
✔ Running task: npm run deploy
- Parallel Execution:
If the user wants to run tasks in parallel, they can modify the tasks.yaml
file:
tasks:
lint:
command: "npm run lint"
build:
command: "npm run build"
test:
command: "npm test"
dependsOn: ["lint", "build"] # Run "lint" and "build" in parallel
- Environment Variables:
The user can use environment variables in their commands:
tasks:
deploy:
command: "npm run deploy --env=${DEPLOY_ENV}"
- Define tasks in a YAML or JSON config.
- Support for parallel and sequential execution.
- Retry failed tasks with exponential backoff.