Сегодня был мой 6-й день 100 дней кода. Я работал над предстоящим Две совки Django 3.x И благодаря моему сотруднику Фабио я узнал что-то новое о Makefiles. Это расширение о том, что он предоставил (я добавил свой разъем и функцию сортировки).
Я видел вариации этого трюка, но это лучшая версия когда-либо. В верхней части вашего Makefile
Поместите в этот код:
.DEFAULT_GOAL := help # Sets default action to be help 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("%-20s %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 help: @python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
Далее мы добавили лаконичные Docstrings для каждого Makefile
команда. Вот что мы сделали для двух команд:
code: ## Extracts code for uploading to GitHub python extractor.py rmcode: ## Removes sample code rm -rf code
Обратите внимание, как Docstring каждая команда начинается с двух знаков фунта? «##»? Это то, что необходимо найти код документарного документа, чтобы найти DOCSTRING.
Когда я печатаю только сделать
Без каких-либо аргументов по умолчанию это триггеры Помогите
Функция, которая управляет сценарием Python в верхней части makefile. Что я получу, это:
$ make clean Cleans up the environment cleandocker Cleans up the docker environment code Extracts code for uploading to GitHub dpdf Render PDF in docker mdeps Discovers missing LaTeX deps mint Production ebook rendering print Renders print version rmcode Removes sample code short faster rendering with minimal index check tiny even faster rendering with no index check
Очень полезно!
Оригинал: “https://dev.to/feldroy/autodocumenting-makefiles-175b”