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