Aktuelle Arbeiten an Pelican
Online seit 2023-08-08 in tech
Motivation
Dieses Blog verwendet ja Pelican als statischen Seitengenerator. Bisher habe ich das so gehandhabt, dass im Rootverzeichnis eine .gitmodules
lag, die einfach alle verfügbaren Plugins und Themes referenziert hat - was das (rekursive) Klonen wirklich bös aufblähte.
Das ging so nicht weiter.
Referenzieren via pip
Pelican hat nun eine neue Org gegründet, pelican-plugins
, deren explizites Ziel es ist, das gleichnamige statische Repository durch eine besser wartbare Infrastruktur zu ersetzen.
Das Problem ist nur – viele alte Plugins kommen damit (noch) nicht gut klar.
- Es fängt schon damit an, dass die Projektstruktur eine ganz andere ist. Die klassischen Plugins legen meist alle Dateien flach in ein Verzeichnis - das kollidiert mit der Struktur, wie sie Pelican erwartet. Das war bislang kein Problem, weil die Pfade explizit über die
pelicanconf.py
referenziert wurden - genau das soll aber nun ja aufgebrochen werden. - Noch dazu geben viele Plugins ihre Abhängigkeiten nur via
README.md
preis:This plugin depends on python package
gitpython
, install [it via pip]
Ja, nein. Ich möchte die Plugins abstrakt (!) über eine requirements.txt
et.al. beschreiben und gut. Da steht schon Pelican selbst, da gehört das mit dazu.
Aktuelle Arbeit
Ich bin also dran, das nach und nach aufzulösen und habe mal mit folgenden Plugins angefangen:
Mein Workflow sieht dafür wie folgt aus:
$ ( mkdir ${PLUGIN_NAME}-bare && \
cd ${PLUGIN_NAME}-bare && \
git init --bare )
$ ( cd pelican-plugins && \
git subtree -b ${PLUGIN_NAME} --prefix ${PLUGIN_NAME} split && \
git checkout ${PLUGIN_NAME} && \
git remote add ${PLUGIN_NAME} ../${PLUGIN_NAME}-bare && \
git push ${PLUGIN_NAME} ${PLUGIN_NAME}:master )
Daraufhin liegen die Plugins alle in separaten Bare-Repos, können von da geklont werden, oder was ihr sonst damit anstellen wollt. Ich habe sie lokal in ein normales Repo geklont, dort das entsprechende Github-Repo als zusätzlichen Remote eingetragen und anschließend dorthin gepusht.
Das reicht für einen ersten Versuch, der via pip install "representative_image @ https://github.com/schtobia/representative_image/archive/refs/heads/master.tar.gz"
getestet werden kann.
Wie geht’s weiter?
Für mich reicht das erst mal, um dieses Blog hier wieder zum Laufen zu bekommen. Das mittelfristige Ziel ist natürlich, das in der obens erwähnten Org unterzubringen. Da bin ich dran, im Moment gerade an featured-image
. Aber das dauert natürlich noch etwas, bis die alle sauber sind.