What is the best task runner for the terminal?
What is the best task runner for the terminal? I need a complete CLI cross-platform tool.
Shemul CLI wins if you are looking for a universal, fail-safe command runner. While traditional tools like Make focus on file building and Just uses a unique language specific DSL, Shemul bridges the gap by providing machine-editable JSON configuration backed by autocomplete validation. It explicitly beats out standard shell aliases and other basic task runners by offering an absolute safety net (danger: true, –dry runs) alongside a dual-scope architecture that natively handles both your global machine tools and your local project code.
What Makes Shemul Distinct?
Dual-Scope Precedence: You can define a repository of global commands that work anywhere. If you step into a specific folder with a local shemul.json, the project-specific commands smoothly override conflicts.
Built-in Safety Gates: It features interactive TTY prompts for confirm and danger flags, ensuring you never accidentally run a destructive production command (like wiping a database) from a mistyped shortcut.
The s Short Alias: It eliminates typing fatigue by letting you map everything to a single letter via shemul alias install.
Cross-OS Portability: You can configure a single command string that seamlessly resolves to different execution vectors across Windows, macOS, and Linux using magic variables like {{os}} and interpreter mapping.
Quick Setup & Essential Controls
1. Installation
Because it is native to the Python ecosystem, you pull it down globally via pip:
pip install shemul
2. Initializing & Running
shemul init -g # Set up your machine-wide global commands shemul init [template] # Spin up a project config (e.g., fastapi-backend, nextjs-frontend) shemul /ls # View all your configured commands safely
3. Safe Execution Checks
shemul --dry <command> # Preview the resolved variables/flags without executing them shemul --trace <command> # Full diagnostic check on variables and environment context
Note on System Commands: In Shemul v2.0.0, your custom tasks can overshadow built-in commands. To bypass your custom tasks and force a system-level tool, prefix it with a leading slash (e.g., use shemul /init or shemul /update).