Ramblings of an aging IT geek
← Ramblings of an aging IT geek
tooling

make is a perfectly good task runner, actually

Using a plain Makefile as the project task runner for a Go and Python repo, instead of reaching for yet another tool.

A keyboard in front of a terminal

There is no C in the repo I'm describing. It's Go services with a Python tooling sidecar, and yet the thing tying it all together is a Makefile. Every time I mention this someone suggests a shinier task runner. I keep not switching.

The reason is dull and persuasive: make is already installed on every box I touch, the syntax is mostly muscle memory by now, and make <tab> after a few .PHONY targets gives me a menu of what the project does.

.PHONY: build test lint fmt

build:
	go build ./...

test:
	go test ./...
	python -m pytest tests/

lint:
	go vet ./...
	flake8 .

The footguns are real. Tabs not spaces. Every recipe line runs in its own shell, so cd foo doesn't carry to the next line. And dependency graphs on phony targets get silly fast. But for "here are the dozen commands a newcomer needs to know," a Makefile beats a wiki page that nobody updates. It lives next to the code and it either works or it doesn't.