Рубрики
Без рубрики

Autodocumenting Makefiles.

Сегодня был мой 6-й день 100 дней кода. Я работал над предстоящим двумя ломами Django 3.x … Теги с сегодняшним, 100Дамсофкодом, Python, Django.

Сегодня был мой 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”