Bei der Umstellung meines Blogs auf Hugo hatte ich mehrere Shell-Aliase in der .bashrc
erstellt, um die Arbeit einfacher zu gestalten, wie z. B. eine tmux-Session im Verzeichnis der Website starten, nach Seitennamen, Kategorien und Tags zu suchen und einiges mehr. Es wurden immer mehr Aliase und es war nicht wirklich flexibel sondern nur richtig hacky.
Spätestens seitdem ich auch mein neues Wiki mit Hugo nutze, funktionieren die vielen Aliase nicht mehr, denn ich bräuchte alles doppelt, um auch die Arbeit mit meinem Wiki damit bewerkstelligen zu können. Flexibel ist anders.
Und weil auch Vri in Zukunft in der Lage sein soll, sowohl im Wiki als auch im Blog Dinge zu tun, musste ich da was Schönes bauen. Denn meine vorherige Frickellösung könnte ich guten Gewissens niemandem zumuten.
Also habe ich heute Nacht ohne Ahnung und viel $Suchmaschine ein Python-Script erstellt, das die ganzen Shell-Aliase ersetzt und jetzt für beliebig viele Webseiten funktioniert. Und dabei habe ich sogar einen fiesen Bug in der Plasmashell gefunden.
Was kann das Script?
Mit dem neuen Script kann ich sehr einfach:
- Eine Website generieren lassen.
- Eine Website hochladen (mit rsync synchronisieren).
- Die beiden oberen Dinge in einem Aufruf.
- Eine Website lokal zur Verfügung stellen (
hugo server
). - Eine tmux-Session innerhalb des lokalen Verzeichnisses starten, um dort z. B. git zu verwenden.
- (Nur im Blog) nach verwendeten Tags und nach Kategorien suchen. Dabei funktionieren sowohl einfache Strings als auch Reguläre Ausdrücke.
- Mittels
grep -r
suchen. - Aktuelle Uhrzeit inklusive Datum und Zeitzone erhalten. Für das Front Matter (Metadaten einer einzelnen Seite).
Hier z. B. die Suche nach allen Seiten im Blog, in denen der String hugo
vorkommt:
[…]
content/posts/2016/2016-12-02-hugo-kann-mehrsprachig.md,,Hugo kann mehrsprachig :),2016-12-02T13:29:05Z,0001-01-01T00:00:00Z,2016-12-02T13:29:05Z,false,/2016/12/hugo-kann-mehrsprachig/
content/posts/2015/2015-12-10-gpeasy-php-durch-hugo-statisches-html-ersetzt.md,,gpEasy (PHP) durch Hugo (statisches HTML) ersetzt,2015-12-10T13:05:11Z,0001-01-01T00:00:00Z,2015-12-10T13:05:11Z,false,/2015/12/gpeasy-php-durch-hugo-statisches-html-ersetzt/
Format: path,slug,title,date,expiryDate,publishDate,draft,permalink
Results for 'hugo': 27
Externe Konfiguration
Die Konfigurationsdatei mit den Einstellungen für beliebig viele Websites liegt in ~/.config/hugo-noms.conf
.
Hilfe
Da das Script argparse verwendet, gibt es automatisch eine schöne Hilfe: 1
usage: hg.py [-h] [--site SITE_NAME | --time | --printconfig | --sites]
[--cd | --build | --upload | --deploy | --tmux | --serve | --serve_light]
[--searchpost SEARCHPOST | --searchgrep SEARCHGREP | --searchtag SEARCHTAG | --searchcat SEARCHCAT]
Handles hugo stuff.
optional arguments:
-h, --help show this help message and exit
--site SITE_NAME Name of the website to work on currently.
--time Copy current date and time to clipboard.
--printconfig Print the devices configuration.
--sites Print sites from configuration
--cd Change directory to workdir of site.
--build Build a site.
--upload Build AND upload site to remote.
--deploy Deploy (build AND upload) a site.
--tmux Start the tmux session for --site.
--serve Serves site (full).
--serve_light Serves site (light).
--searchpost SEARCHPOST
Find pages/posts containing search term in 'path, slug, title, date or permalink'.
Strings and Regular Expressions (regex) are allowed.
--searchgrep SEARCHGREP
Find pages/posts containing search term in file content. Uses 'grep -r'. Strings and
Regular Expressions (regex) are allowed.
--searchtag SEARCHTAG
Find tags containing search term. Strings and Regular Expressions (regex) are allowed.
--searchcat SEARCHCAT
Find categories containing search term. Strings and Regular Expressions (regex) are
allowed.
Wo gibts das Script?
Vielleicht kann das ja noch jemand gebrauchen. Ich weiß aktuell nicht, wo ich es hinschubsen könnte, daher liegt es jetzt erst einmal in meinem Wiki im neuen Bereich Hugo
, siehe hier.
Nur noch zwei Aliase
Da ich ein extrem fauler Mensch bin, habe ich aber später trotzdem noch zwei Aliase in der .bashrc
definiert:
alias hgb='/pfad/zu/hg.py --site blog'
alias hgw='/pfad/zu/hg.py --site wiki'
Somit kann ich z. B.
hg.py --site blog --tmux
abkürzen mit
hgb --tmux
🙂
Bug in Plasmashell
Ruft man ein Script mit diesen beiden Zeilen auf oder führt es in iPython aus, dann hängt sich die Plasmashell entweder für ein paar Sekunden, lange oder komplett auf. Der String landet trotzdem nicht in der Zwischenablage obwohl xclip als auch xsel installiert sind.
import pyperclip
pyperclip.copy("text")
Ich wollte diese Funktion nutzen, um einen generierten String mit Datum, Uhrzeit und Zeitzone in die Zwischenablage zu kopieren, um diesen dann im Front Matter eines Blogbeitrags manuell über die Zwischenablage einfügen zu können. Stattdessen nutze ich jetzt os.system("date … | xsel …")
.
schlechtes Englisch darf behalten werden 🙂 ↩︎
Kommentare
Bisher gibt es hier keine Kommentare.
Kommentar oder Anmerkung für diesen Blogbeitrag
Öffentlicher Kommentar per E-Mail: Hier klicken
Nicht öffentliche Anmerkung per E-Mail: Hier klicken
Sonstige Kontaktaufnahme: Kontakt