Make: Ein Low-Tech Automatisierungstool
Eigentlich ist make
ein ziemlich altes Werkzeug aus der Software-Entwicklung. Aber auch darüber hinaus kann man es zur Automatisierung und Standardisierung von Abläufen nutzen.
- Automatisiertes Umwandeln von Markdown-Dateien in PDFs
- Betriebssystem-Updates durchführen
- Backups erstellen
- Housekeeping und Maintenance auf dem Heimserver durchführen
Der Aufbau einer makefile
ist relativ einfach:
ziel: (optionale Abhängigkeiten)
Rezept
Achtung: Die Einrückung vor dem Rezept muss zwingend ein Tab-Zeichen sein, kein Leerzeichen.
Um beim Bearbeiten von makefile
Tabs anstelle von Leerzeichen zu verwenden, habe ich folgende Konfiguration in meiner .vimrc
autocmd FileType make setlocal noexpandtab shiftwidth=8 tabstop=8
Beispiele
Backup des Home-Verzeichnis auf einen Server
backup-home:
rsync -av /home/ remote-user@server:/backup/home/
Updates einspielen
update-system:
sudo dnf update -y
sudo dnf autoremove -y
Hugo Builds vereinfachen
HUGO = hugo
PUBLIC_DIR = public
CONTENT_DIR = content
DATE = $(shell date +%Y-%m-%d)
TIME = $(shell date +%H:%M:%S)
# Standard-Target
all: build
build:
$(HUGO)
serve:
$(HUGO) serve --drafts --buildDrafts
production:
$(HUGO) --minify --gc
clean:
rm -rf $(PUBLIC_DIR)
new-post:
@read -p "Post title: " title; \
slug=$$(echo "$$title" | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g' | sed 's/[,:!.]/-/g'); \
$(HUGO) new posts/$(DATE)-$$slug.md; \
echo "Created post: posts/$(DATE)-$$slug.md"
commit:
git add .
git commit -m "Site update $(DATE) $(TIME)"
git push origin main
.PHONY: all build serve production clean commit