Skip to content

rheinjug/javaland2025

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bash war gestern: Shell Scripting mit Babashka

Wann hast du das letzte Mal ein etwas komplexeres Bash Script geschrieben und dir gewünscht, du könntest das Ding einfach mit Java schreiben? Java können wir dir zwar nicht direkt anbieten, dafür aber Clojure. Babashka ist eine Script-Engine, mit der wir quasi mit Clojure Shell-Skripte und Tasks schreiben können und die Dank der nativen Compilation mit der Graal VM eine Startup Zeit hat, die an native Bash-Skripte herankommt.

In unserem Workshop zeigen wir dir, wie du mit Babashka die etwas komplizierten Shell Probleme lösen kannst und wenden das dann auch gleich an.

Ablauf

In diesem Repository befinden sich verschiedene Skripte, die Stück für Stück aufgerufen und absolviert werden können. Viele Skripte dienen nur einem ersten Eindruck. Hier ist eure Kreativität gefragt 🧑‍🎨 Wandelt die Aufgaben ab, denkt weiter, experimentiert herum. Es geht hier nicht um das Lösen der Aufgaben, sondern um das gemeinsame Lernen und Verstehen.

Fangen wir zuerst damit an den Editor einzurichten und starten dann mit den Scripts im Ordner scripts.

Voraussetzungen

Editor einrichten

Wir verwenden hier VS Code bzw. VS Codium mit dem Plugin "Calva". Dann starten wir eine REPL und verbinden den Editor damit. Das klappt besonders gut mit entsprechend konfiguriertem Editor, weshalb wir uns hier kurz die Zeit nehmen.

Hier ist ein kleines Video, um in VSCode eine Babashka REPL zu starten und den Editor damit zu verbinden. Dann können wir den Code direkt aus dem Editor in die REPL schicken.

repl_jack_in.mp4

Tastenkürzel Empfehlungen

Besonders grandios ist es wenn man eine REPL hat aus dem Editor heraus damit interagieren zu können. Dafür gibt es ein paar Tastenkürzel, die ihr nach eurem Belieben konfigurieren könnt. Das hier sind meine (Christian) Empfehlungen:

  • C-c C-c (Control C, Control C): Evaluiert S-Expression (schickt also den aktuellen Code vom Cursor in die REPL.)
  • C-c C-k: Lädt den gesamten Code aus der Datei in die REPL.
  • C-c right: Schiebt die schließende Klammer einen Ausdruck weiter nach rechts.
  • C-c left: Schiebt die schließende Klammer einen Ausdruck zurück nach links.
  • C-c C-d: Hat man aus Versehen eine Endlosschleife erzeugt, bricht man den letzten Ausdruck mit diesem Kürzel wieder ab.

Um die Kürzel zu installieren, öffnet ihr in VSCode unter Preferences die Keyboard Shortcuts. Oben rechts findet ihr ein Symbol, mit dem ihr die Konfigurationsdatei öffnen könnt.

image

Dort könnt ihr die folgenden Einträge hinzufügen.

[
  {
    "key": "ctrl+c ctrl+c",
    "command": "calva.evaluateCurrentTopLevelForm",
    "when": "calva:connected"
  },
  {
    "key": "ctrl+c ctrl+d",
    "command": "calva.interruptAllEvaluations",
    "when": "calva:connected"
  },
  {
    "key": "ctrl+c ctrl+k",
    "command": "calva.loadFile",
    "when": "calva:connected"
  },
  {
    "key": "ctrl+c right",
    "command": "paredit.slurpSexpForward",
    "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/"
  },
  {
    "key": "ctrl+c left",
    "command": "paredit.barfSexpForward",
    "when": "calva:keybindingsEnabled && editorTextFocus && editorLangId == 'clojure' && editorLangId == 'clojure' && paredit:keyMap =~ /original|strict/"
  }
]

Team

About

Babashka Workshop

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published