codefionn

Go ist eine gute Skriptsprache

TL;DR Go ist eine gute Skriptsprache, wenn du mehr als eine Shell-Sprache benötigst.

Ich musste kürzlich einen Dockerfile-Generator schreiben für das Zwischenspeichern automatischer Test-Läufe und die inkrementelle Zwischenspeicherung des Builds ohne einen tatsächlichen inkrementellen Build in CICD.

Ablauf: XML-Projektdateien gehen in main.go, ausgeführt mit go run, das ein Dockerfile schreibt, das der CI-Build als zwischengespeicherte Schichten für Abhängigkeiten, Build und Tests ausführt
Die Aufgabe: aus Projektdateien ein Dockerfile mit zwischenspeicherbaren Schichten

Zuvor war dieser Generator in Bash und PowerShell geschrieben.

Benötigte Features für die gewählte Sprache waren:

Die folgenden Sprachen/Laufzeiten standen für diese Aufgabe zur Auswahl:

Deno, Lua und Python benötigen externe Pakete für das Parsen von XML-Dateien. Deno wäre einfacher, weil externe Abhängigkeiten einfach mit nur einer URL importiert werden können. Nushell hat Probleme beim Parsen bestimmter XML-Dateien. Go hingegen hat XML-Parsing eingebaut.

Go ist auch einfach mit go run main.go ausführbar, benötigt keine Hilfsdateien (wie packages.json bei npm), kann aber auch kompiliert und zwischengespeichert werden. Außerdem ist Go trivial multi-threaded, was ein großes Problem in vielen interpretierten Sprachen ist.