Makefile
Dieses makefile im Ordner qmd speichern (Download):
# Ermittelt den Namen des übergeordneten Hauptordners (Parent Directory)
PARENTDIR := $(notdir $(patsubst %/,%,$(dir $(CURDIR))))
# Nutzt den Namen des übergeordneten Ordners für die virtuelle Umgebung von uv
export UV_PROJECT_ENVIRONMENT := $(HOME)/.cache/uv-environments/$(PARENTDIR)
DATE := $(shell date +%Y-%m-%d)
TARFILE := ../tgz/$(PARENTDIR)_site_$(DATE).tgz
# Publikationsverzeichnis
WEBSITE_PARENTDIR := /media/sf_abc123/public_html/jbusse.de/$(PARENTDIR)
.PHONY: all sync lab stop preview html tgz publish git backup release clean
all: preview
sync:
uv sync
@echo "sync: $$(($$(uv pip list | wc -l) - 2)) Pakete"
lab: sync
BROWSER="firefox --new-window %s" uv run jupyter lab &
stop:
-pkill -f "jupyter-lab"
-pkill -f "quarto"
# Holt sich vor dem Starten immer den aktuellen Paketstand
preview: sync
BROWSER="firefox --new-window %s" uv run quarto preview &
# Rendert die HTML-Dateien mit aktueller Python-Umgebung
html: sync
uv run quarto render
@du -sh _site
# Erstellt das komprimierte Archiv im übergeordneten tgz-Ordner
tgz: html
mkdir -p ../tgz/
tar -czf $(TARFILE) _site/
@du -sh $(TARFILE)
# Publiziert den Inhalt, legt die tgz-Datei dazu und zeigt finale Größen an
publish: html tgz
mkdir -p $(WEBSITE_PARENTDIR)
rm -rf $(WEBSITE_PARENTDIR)/*
cp -rp _site/. $(WEBSITE_PARENTDIR)/
cp $(TARFILE) $(WEBSITE_PARENTDIR)/
@echo "Website und Archiv erfolgreich nach $(WEBSITE_PARENTDIR) publiziert!"
@du -sh $(WEBSITE_PARENTDIR)
@du -sh $(TARFILE)
# Git-Sicherung (hier lokal im qmd-Ordner, nicht im Hauptordner)
git:
git add .
@if [ -n "$$(git status --porcelain)" ]; then \
git commit -m "Automatischer Build und Commit am $(DATE)"; \
fi
backup:
@echo "Starte Back In Time Backup..."
backintime backup
# Feierabend: Rendern, Packen, Publizieren, Gitten und Sichern!
release: publish git backup
# Gründlich aufräumen
clean: stop
rm -rf $(UV_PROJECT_ENVIRONMENT)
rm -rf .venv
rm -rf .quarto/
rm -rf _freeze/
rm -rf _site/
rm -f ../tgz/$(PARENTDIR)_site_*.tgz
find . -type d -name "__pycache__" -exec rm -rf {} +
find . -type d -name ".ipynb_checkpoints" -exec rm -rf {} +
find . -type d -name ".pytest_cache" -exec rm -rf {} +
rm -rf $(HOME)/.jupyter/lab/workspaces/$(PARENTDIR)-*
rm -f $(HOME)/.jupyter/lab/workspaces/$(PARENTDIR).jupyterlab-workspace