Hogyan hozzunk létre egy öndokumentáló Makefile-t

Új kedvenc módszerem a Makefile teljes kihasználatlanságára? Személyre szabott, projektenkénti lerakat munkafolyamat-parancs álnevek létrehozása, amelyeket bejelentkezhet.

Javíthatja-e a Makefile a DevOps-t és örömmel töltheti el a fejlesztőket? Mennyire lenne fantasztikus, ha a projektjén dolgozó új fejlesztő nem a README parancsainak másolásával és beillesztésével indulna? Mi lenne, ha nem:

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

... csak beírhatnád:

make start

… És akkor elkezd dolgozni?

Különbséget tenni

makeMinden nap használom az unalom eltávolítását az olyan általános fejlesztési tevékenységekből, mint a programok frissítése, a függőségek telepítése és a tesztelés.

Ahhoz, hogy mindezt egy Makefile-tel (GNU make) készítsük el, a Makefile szabályait és receptjeit használjuk. Hasonló párhuzamok léteznek a POSIX ízgyártáshoz, mint például a Target Rules. Íme egy remek cikk a POSIX-kompatibilis Makefiles-ról.

Íme néhány példa a makekönnyebb dolgokra (sajnálom):

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 

Most van néhány parancssori álnevünk, amelyeket be lehet jelentkezni. Remek ötlet! Ha kíváncsi vagy, hogy mi van ezzel a furcsa ##megjegyzésszintaxissal, az jobb lesz.

Öndokumentáló Makefile

Az álnevek nagyszerűek, ha emlékszik mindannyian és mit csinálnak állandó gépelés nélkül cat Makefile. Természetesen helpparancsra van szüksége :

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

Egy kis parancssori varázslattal ez a egrepparancs felveszi a kimenetet MAKEFILE_LIST, rendezi és felhasználja awka ##mintát követő karakterláncok keresését . Ezután kinyomtatja a megjegyzések hasznos formázott változatát.

A fájl tetejére tesszük, így ez az alapértelmezett cél. Most, hogy megtekinthessük az összes praktikus parancsikont és mit csinálnak, csak futunk make, vagy 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 

Most saját személyre szabott és projekt-specifikus CLI eszközünk van!

Az öndokumentáló Makefile segítségével a DevOps folyamat javításának lehetőségei szinte végtelenek. Az egyik segítségével egyszerűsítheti a munkafolyamatokat, és nagyon boldog fejlesztőket hozhat létre.