Dart als Scripting-Lösung
Während Dart hauptsächlich im Kontext von Flutter Erwähnung hier im Blog findet, gibt es diverse weitere Anwendungsgebiete. Eines von diesen erschließe ich mir gerade und konkret geht es um Dart als Kommandozeilen-Tool.
Generelle setzt man in diesem Bereich ja eher auf die Shell open_in_new unter Linux oder aber PowerShell open_in_new unter Windows. Gerne wird auch Phyton open_in_new genutzt, aber zu Phyton habe ich bis dato keinen Zugang gefunden. Entsprechend fiel meine Wahl auf das für mich naheliegendste.
Dart ist durch Flutter aktuell eine meiner Hauptsprachen, neben Kotlin. Sofern Dart installiert ist und auf dem Pfad hinterlegt wurde, was im Falle eines Flutter Setups vermutlich ohnehin der Fall ist, kann es bereits losgehen. Mit Dart kann man nun im Prinzip fast alles umsetzen was man normalerweise mit anderen Scripting-Lösungen kann, nur halt in einer Sprache die relativ sicher zu programmieren ist und durch Null Safety wird dieser Bereich bald sogar noch ausgebaut. Dart Programme können dann direkt auf der Konsole ausgeführt werden, wie man es z.B. von Phyton kennt. Parameter und ähnliche Dinge können natürlich auch übergeben werden, sodass man hier eine durchaus vollwertige Scripting-Lösung erhält.
Ist man bereits mit Phyton unterwegs, würde ich keinen generellen Mehrwert durch Dart erwarten, aber zumindest für mich persönlich gab es durch Dart Vorteile gegenüber PowerShell bzw. der Linux Shell. Denn die zuletzt genannten Tools unterscheiden sich stark in ihrer Syntax und auch der Funktionalität, was ein Umdenken je nach Plattform erzwingt und auch die Entwicklung teilweise anstrengender macht als sie sein müsste. Dafür erhält man natürlich direkte Integration ins Tooling des Systems. Es ist also ein Abwegen je nach Problem gefragt.
Für mich bewehrt sich aktuell der duale Weg. Soll heißen ich nutze Dart für komplexe Probleme oder Anwendungen, die aber keine UI brauchen. Hier ist ein Beispiel das Parsen und konvertieren von Website Daten in ein JSON. Denkbar wären hier auch kleine Monitoring-Lösungen oder ähnliches. Schön ist übrigens auch das man Dart via AOT Kompilierung open_in_new als native Binaries ausliefern kann. Möchte ich hingegeben etwas auf meinem Linux Server automatisieren was nah am System liegt und an sich keine große Komplexität aufweist, so nutze ich die Linux Shell. In letzterem Bereich wäre Dart natürlich möglich, aber aufgrund der Nähe der Shell zum System sind Dinge in diesem Bereich meiner Erfahrung nach schöner mit der Shell zu lösen. Ich denke hier z.B. an das verschieben oder verändern von Dateien, basierend auf einem CronJob.
Es gilt also wie immer das richtige Tool für die aktuelle Aufgabe zu finden, eine Lösung für alles ist meist keine optimale Idee, wenn auch manchmal eine gangbare. Wie sieht es bei euch aus, wie löst ihr derartige Problemstellungen.