My Profile Photo

Sheogorath's Blog

Self-documenting Makefiles

Today I learned how to write self-documenting Makefiles which allow to write an own CLI tool using make as part of a repository. This is done, by keeping a small selection of make targets around, which get a special annotation that describes the targets purpose and will be exported as “target description” when calling a special help target that filters for this annotation.

help: ## Show this help
	@egrep -h '\s##\s' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'

I came across this wonderful idea while reading the article about “self-documenting Makefiles” by Victoria Drake, that I highly recommend to check out for details on the topic. As a result I sat down and wrote an own set of Makefiles for this blog. There is still some work left, but it’s already an improvement over the original set of shell scripts.