Como Criar um Makefile Auto-Documentável

pip3 install pipenv
pipenv shell --python 3.8
pipenv install --dev
npm install
pre-commit install --install-hooks
# look up how to install Framework X...
# copy and paste from README...
npm run serve

… você pode simplesmente digitar:

make start

… E depois começar a trabalhar?

Fazendo a diferença

eu uso make todos os dias para tirar o tédio das atividades de desenvolvimento comuns, como atualização de programas, instalação de dependências e testes.

Para fazer tudo isso com um Makefile (GNU make), usamos Regras de Makefile e receitas. Paralelos semelhantes existem para o make de sabor POSIX, como Regras Alvo. Aqui está um ótimo artigo em Makefiles compatíveis com POSIX.

Aqui estão alguns exemplos de coisas que podemos make mais fácil (desculpe):

update: ## Do apt upgrade and autoremove
    sudo apt update && sudo apt upgrade -y
    sudo apt autoremove -y

env:
    pip3 install pipenv
    pipenv shell --python 3.8

install: ## Install or update dependencies
    pipenv install --dev
    npm install
    pre-commit install --install-hooks

serve: ## Run the local development server
    hugo serve --enableGitInfo --disableFastRender --environment development

initial: update env install serve ## Install tools and start development server

Agora temos alguns aliases de linha de comando que você pode verificar. Ótima ideia! Se você está se perguntando o que há com aquele estranho ## sintaxe de comentário, fica melhor.

Um Makefile auto-documentado

Os aliases são ótimos, se você se lembrar o que são e o que fazem sem digitar constantemente cat Makefile. Naturalmente, você precisa de um help comando:

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

Com um pouco de magia de linha de comando, este egrep comando pega a saída de MAKEFILE_LIST, classifica e usa awk para encontrar strings que seguem o ## padronizar. Em seguida, ele imprime uma versão formatada útil dos comentários.

Vamos colocá-lo no topo do arquivo para que seja o destino padrão. Agora, para ver todos os nossos atalhos úteis e o que eles fazem, basta executar make, ou make help:

help                 Show this help
initial              Install tools and start development server
install              Install or update dependencies
serve                Run the local development server
update               Do apt upgrade and autoremove

Agora temos nossa própria ferramenta CLI personalizada e específica para projetos!

As possibilidades de melhorar seu fluxo de DevOps com um Makefile autodocumentado são quase infinitas. Você pode usar um para simplificar qualquer fluxo de trabalho e produzir alguns desenvolvedores muito felizes.