Browse Source

🐍 Why not generating `make`s help in Python?

master
David Larlet 2 years ago
parent
commit
d7d9526c5e
1 changed files with 21 additions and 1 deletions
  1. 21
    1
      Makefile

+ 21
- 1
Makefile View File



SERVER_OUTPUT = $(TARGET_SERVER_OUTPUT) # user@server.url:/path/to/website SERVER_OUTPUT = $(TARGET_SERVER_OUTPUT) # user@server.url:/path/to/website


# See https://daniel.feldroy.com/posts/autodocumenting-makefiles
define PRINT_HELP_PYSCRIPT # start of Python section
import re, sys

output = []
# Loop through the lines in this file
for line in sys.stdin:
# if the line has a command and a comment start with
# two pound signs, add it to the output
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
if match:
target, help = match.groups()
output.append("\033[36m%-10s\033[0m %s" % (target, help))
# Sort the output in alphanumeric order
output.sort()
# Print the help result
print('\n'.join(output))
endef
export PRINT_HELP_PYSCRIPT # End of python section

.PHONY: install .PHONY: install
install: ## Install the dependencies to build the website install: ## Install the dependencies to build the website
python -m pip install -r requirements.txt python -m pip install -r requirements.txt


.PHONY: help .PHONY: help
help: help:
@grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)

Loading…
Cancel
Save