-
-
Save kuanyui/dc916e0fa0ba224064d294a81f119916 to your computer and use it in GitHub Desktop.
self-documenting makefile with colors
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SHELL=/bin/bash | |
# to see all colors, run | |
# bash -c 'for c in {0..255}; do tput setaf $c; tput setaf $c | cat -v; echo =$c; done' | |
# the first 15 entries are the 8-bit colors | |
# define standard colors | |
ifneq (,$(findstring xterm,${TERM})) | |
BLACK := $(shell tput -Txterm setaf 0) | |
RED := $(shell tput -Txterm setaf 1) | |
GREEN := $(shell tput -Txterm setaf 2) | |
YELLOW := $(shell tput -Txterm setaf 3) | |
LIGHTPURPLE := $(shell tput -Txterm setaf 4) | |
PURPLE := $(shell tput -Txterm setaf 5) | |
BLUE := $(shell tput -Txterm setaf 6) | |
WHITE := $(shell tput -Txterm setaf 7) | |
RESET := $(shell tput -Txterm sgr0) | |
else | |
BLACK := "" | |
RED := "" | |
GREEN := "" | |
YELLOW := "" | |
LIGHTPURPLE := "" | |
PURPLE := "" | |
BLUE := "" | |
WHITE := "" | |
RESET := "" | |
endif | |
# set target color | |
TARGET_COLOR := $(BLUE) | |
POUND = \# | |
.PHONY: no_targets__ info help build deploy doc | |
no_targets__: | |
.DEFAULT_GOAL := help | |
colors: ## show all the colors | |
@echo "${BLACK}BLACK${RESET}" | |
@echo "${RED}RED${RESET}" | |
@echo "${GREEN}GREEN${RESET}" | |
@echo "${YELLOW}YELLOW${RESET}" | |
@echo "${LIGHTPURPLE}LIGHTPURPLE${RESET}" | |
@echo "${PURPLE}PURPLE${RESET}" | |
@echo "${BLUE}BLUE${RESET}" | |
@echo "${WHITE}WHITE${RESET}" | |
job1: ## help for job 1 | |
@echo "job 1 started" | |
@$(MAKE) job2 | |
@echo "job 1 finished" | |
job2: ## help for job 2 | |
@echo "job 2" | |
job%: ## help for job with wildcard | |
@echo "job $@" | |
help: | |
@echo "" | |
@echo " ${BLACK}:: ${RED}Self-documenting Makefile${RESET} ${BLACK}::${RESET}" | |
@echo "" | |
@echo "Document targets by adding '$(POUND)$(POUND) comment' after the target" | |
@echo "" | |
@echo "Example:" | |
@echo " | job1: $(POUND)$(POUND) help for job 1" | |
@echo " | @echo \"run stuff for target1\"" | |
@echo "" | |
@echo "${BLACK}-----------------------------------------------------------------${RESET}" | |
@grep -E '^[a-zA-Z_0-9%-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "${TARGET_COLOR}%-30s${RESET} %s\n", $$1, $$2}' | |
# vim:noexpandtab:ts=8:sw=8:ai |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment