Wake - Universal Task Runner
Wake is a universal task runner wrapper that provides a unified interface for various build tools and task runners (make, npm/pnpm/yarn/bun, just, task, etc.). It features both CLI and TUI modes, offering developers a consistent way to discover, manage, and execute tasks across different project types.
Features
- Universal Interface: Works with Makefiles, package.json scripts, Justfiles, Taskfiles, and custom Python tasks
- Dual Modes: Command-line interface (CLI) and interactive terminal user interface (TUI)
- Task Discovery: Automatically discovers task files across project hierarchy
- Unified Execution: Execute tasks from any supported runner with a consistent interface
- Real-time Monitoring: Track execution time and status for all tasks
- Customizable: Highly configurable through TOML configuration files
- Beautiful TUI: Modern, responsive terminal interface with improved styling and layout
Installation
# Using go install
go install github.com/vivalchemy/wake@latest
# Using make
make install
Usage
# Launch TUI
wake
# List all available commands
wake -l
# Execute a specific command
wake <command>
# Dry run (show what would be executed)
wake --dry <command>
Supported Task Runners
- Make (Makefiles)
- NPM/Yarn/PNPM/Bun (package.json scripts)
- Just (Justfiles)
- Task (Taskfile.yml)
- Custom Python tasks (tasks.py)
Configuration
Wake supports configuration through TOML files:
~/.config/wake/config.toml (Global configuration)
.wakeconfig.toml (Project-specific, searched upward)
- Command-line flags (Highest priority)
Example configuration:
[ui]
theme = "dark"
layout = "split"
[keybindings]
quit = ["q", "esc", "ctrl+c"]
run = ["space"]
search = ["/"]
[sources]
enabled = ["make", "npm", "just", "task"]
disabled = ["python"]
[runners]
npm_priority = ["pnpm", "yarn", "npm", "bun"]
License
MIT