_______________ ______
| | | |
|_____ ______| | |
| | | |
| | | | |-------|
| | |--| |--| | | | |__| |
| | | \ / | | | | |
______| |_____ | \/ | | |_______ | ___ |
| | | |\ /| | | | | | | |
|______________| |__| \/ |__| |____________| |__| |_| [] [] [] screw itA task runner for people who can't be bothered.
I got tired of:
- Remembering long commands
- Writing Makefiles
- Learning Yet Another Build Tool
.PHONYexisting
So I made this. It reads a TOML file. It runs commands. That's it.
go install github.com/javanhut/imlazy@latestOr:
git clone https://github.com/javanhut/imlazy
cd imlazy
go run main.go installYes, imlazy installs itself using its own lazy.toml. I used the lazy to control the lazy. (If it complains about /usr/local/bin, sudo it.)
The laziest start: don't configure anything. In a Go, Node, Rust, or Python
project, imlazy test just works — common commands (and your npm scripts) are
auto-detected.
When you want a real config:
imlazy init # creates lazy.toml (auto-converts a Makefile/justfile/Taskfile/package.json if present)Or add commands without opening an editor:
imlazy add build -- go build -o myappOr edit lazy.toml yourself:
[commands.build]
run = ["go build -o myapp"]
[commands.test]
run = ["go test ./..."]Run it:
imlazy build
imlazy testDone.
- Zero-config - no
lazy.toml? Go/Node/Rust/Python commands are auto-detected - Aliases -
imlazy binstead ofimlazy build - Dependencies - run commands in order
- Variables -
{{name}}interpolation - Runtime placeholders -
imlazy deploy env=prodfills{{env}} - Watch mode - re-run on file changes, or
restart = truefor dev servers - Platform-specific - different commands for linux/mac/windows
- Fuzzy matching - typos are forgiven
- Interactive picker - frecency-sorted, so your favorite command is on top
- Parallel execution - go fast, with color-prefixed output
- Dotenv support - load
.envfiles - Timeouts & retries - for flaky stuff
- Hooks & conditionals -
pre/postcommands,if_changedto skip work that's already done - Namespacing -
test:unit,test:e2e, run withtest:* - Migration - auto-convert Makefiles, justfiles, Taskfiles, or npm scripts
imlazy add/imlazy edit- change the config without remembering where it is- Notifications - desktop ping when slow commands finish (you alt-tabbed, admit it)
- Lazy completions -
imlazy completion installfigures out your shell
Too lazy to scroll? Same.
- Getting Started - The minimum to stop suffering
- Configuration - All the TOML options
- Commands - CLI flags and usage
- Features - The fancy stuff
Or just run imlazy help.
[settings]
default = "dev"
[variables]
name = "myapp"
[commands.build]
desc = "Build it"
run = ["go build -o {{name}}"]
alias = ["b"]
[commands.test]
desc = "Test it"
run = ["go test ./..."]
alias = ["t"]
[commands.dev]
desc = "Build and run"
dep = ["build"]
run = ["./{{name}}"]imlazy dev # build then run
imlazy b # just build
imlazy -w test # watch mode
imlazy -i # interactive picker
imlazy build test # multiple commands
imlazy deploy env=prod # fill {{env}} at runtime
imlazy last # re-run last command
imlazy history # what did I even runProbably. Run imlazy validate to catch the obvious ones.
Go nuts. - Javan