Pensiero del mattino… sempre un po’ disturbato da qualunque babashka or altri scripting che sono quasi-clojure ma non 100%. Effettivamente ti portano sulla strada di strutturare scripting in maniera imperativa, singolo-file con poca struttura. E visto che molte cose sono implicite, non posso cambiare “bb” con “clj” e tutto funziona come prima
A lavoro usiamo molto bb e da una parte ti do ragione
Avevamo uno script bb che effettivamente era singolo file, top-to-bottom, con def
etc. etc.
L'abbiamo riscritto in maniera piu' "funzionale" o se non altro con una sorta di pipeline patterns (simile agli interceptor). C'e' un context che parte {}
e tutte le esecuzioni vengono chiamate in una threading macro
Il nostro start script per development e' fatto cosi':
(-> {:cli-options cli-options
:env (into {} (System/getenv))
:clj-extra []}
assign-envs
check-secrets-file
copy-settings-xml
detect-os
detect-clojure
detect-graalvm
detect-rebl
validate-clojure-version
validate-graalvm-version
read-secrets-file
create-docker-runtime-network
cider-version
wait-for-nrepl-port
yarn-install
generate-assets
validate-vault-token
set-clojure-development-image
configure-shared-mounts
clj-extra-args
start-journal)
(che palle indentazione)questo stile aiuta molto nei drawbacks che descrivi, non potremmo comunque sostituire bb a clj direi
generalmente cerchiamo di rendere tutto una funzione che viene chiamata in un ctx con altri arguments, se necessario
Interessante. Quindi questo script bb che cosa inizializza? Alla fine ti ritrovi un repl standard o qualcos’altro?
Si fa partire tutto quello che e' necessario per avere la versione in dev up and running e un REPL standard col quale puoi fare jack in o connetterti normalmente (porta e' fissa)
ok. Pensavo the bb non fosse in grado di runnare un intera Clojure app, ma che ci fossero restrizioni (perche’ e’ una reimplementazione Clojure). Ci sono vari tickets in bb aperti per “compatilita’” con varie libs.
ah no, scusa
lo usiamo come script, fa partire clj
command line che espone REPL 😄
niente di particolare, prima era uno script bash che abbiamo riscritto in bb
ok ha senso, come replacement di bash++ lo capisco