Skip to content

rshelekhov/lazymake

LAZYMAKE


CI GitHub release Go Report Card License: MIT GitHub stars

A terminal UI for browsing and running Makefile targets.

Demo

Quick Start

# Install
brew install rshelekhov/tap/lazymake

# Run in any directory with a Makefile
lazymake

What It Does

lazymake provides an interactive interface for Makefiles with:

  • Target browser with fuzzy search and execution history
  • Dependency graph visualization showing what runs when you execute a target
  • Variable inspector for debugging complex variable expansions
  • Syntax highlighting for recipes (detects Python, Go, shell scripts, etc.)
  • Safety warnings for destructive commands (configurable)
  • Performance tracking to identify slow targets

Why?

In large projects, Makefiles can have dozens or hundreds of targets. Finding the right one means either memorizing names or grepping through the file. This tool gives you a searchable list with descriptions and shows you exactly what will run before you execute anything.

The dependency graph is particularly useful for understanding complex build systems—you can see the full chain of prerequisites, identify bottlenecks, and spot circular dependencies.

Installation

Homebrew (macOS/Linux)

brew install rshelekhov/tap/lazymake

Go

go install github.com/rshelekhov/lazymake/cmd/lazymake@latest

Usage

# Use Makefile in current directory
lazymake

# Specify path
lazymake -f path/to/Makefile

Keyboard shortcuts

  • ↑/↓ or j/k - Navigate
  • Enter - Execute selected target
  • g - Show dependency graph
  • v - Open variable inspector
  • w - Switch between Makefiles (workspace picker)
  • / - Search/filter
  • ? - Help
  • q - Quit

Configuration

Optional .lazymake.yaml for customization:

safety:
  enabled: true
  exclude_targets:
    - clean  # Don't warn about these targets

export:
  enabled: true
  format: json

shell_integration:
  enabled: true

Place in ~/.lazymake.yaml (global) or ./.lazymake.yaml (project-specific).

See configuration guide for all options.

Makefile Documentation

If your targets have comments starting with ##, they'll appear as descriptions in the UI:

build: ## Build the application
	go build -o bin/app

test: ## Run test suite
	go test ./...

This is optional—lazymake works fine without comments.

Features

Dependency Graph Visualization

Dependency Graph

Press g on any target to see its dependency tree with execution order and parallel opportunities. Useful for understanding what make deploy actually does.

Full documentation

Variable Inspector

Variable Inspector

Press v to browse all variables, see their expanded values, and find out which targets use them. Helpful when debugging complex variable substitutions or figuring out where LDFLAGS is defined.

Full documentation

Dangerous Command Detection

Safety Features

Helps prevent accidental execution of destructive commands. lazymake scans targets for potentially dangerous operations (like rm -rf, DROP DATABASE, etc.) and prompts for confirmation.

Full documentation

Workspace Management

Workspace Management

Press w to switch between Makefiles in your project. Automatically discovers Makefiles in subdirectories and remembers recent files.

Full documentation

FAQ

Does it work with my existing Makefile?
Yes. No changes required.

Which Make implementations are supported?
All of them. lazymake parses the file and uses your system's make for execution.

Does it modify my Makefile?
No. It's read-only.

Can I disable safety warnings?
Yes. Add target names to exclude_targets in .lazymake.yaml.

Contributing

See CONTRIBUTING.md.

License

MIT - see LICENSE.

Acknowledgments

Built with Bubble Tea, Lipgloss, Chroma, and Cobra.

Inspired by lazygit and lazydocker.


Made with ❤️ for developers.

About

Modern TUI for Makefiles with interactive target selection, dependency visualization, and command safety analysis

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors