Fork me on GitHub
#clojure-italy
<
2021-02-23
>
reborg11:02:42

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

helios10:02:33

A lavoro usiamo molto bb e da una parte ti do ragione

helios10:02:56

Avevamo uno script bb che effettivamente era singolo file, top-to-bottom, con def etc. etc.

helios10:02:43

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

helios10:02:18

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)

helios10:02:04

questo stile aiuta molto nei drawbacks che descrivi, non potremmo comunque sostituire bb a clj direi

helios10:02:24

generalmente cerchiamo di rendere tutto una funzione che viene chiamata in un ctx con altri arguments, se necessario

reborg10:02:40

Interessante. Quindi questo script bb che cosa inizializza? Alla fine ti ritrovi un repl standard o qualcos’altro?

helios08:03:32

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)

reborg11:03:18

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.

helios22:03:51

ah no, scusa

helios22:03:02

lo usiamo come script, fa partire clj command line che espone REPL 😄

helios22:03:34

niente di particolare, prima era uno script bash che abbiamo riscritto in bb

reborg22:03:18

ok ha senso, come replacement di bash++ lo capisco