clojure-italy

🇮🇹
reborg 2021-02-23T11:03:42.003Z

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

helios 2021-02-25T10:28:33.004800Z

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

helios 2021-02-25T10:28:56.005Z

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

helios 2021-02-25T10:29:43.005200Z

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

helios 2021-02-25T10:30:18.005400Z

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)

helios 2021-02-25T10:31:04.005800Z

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

helios 2021-02-25T10:31:24.006Z

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

reborg 2021-02-25T10:45:40.007400Z

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

helios 2021-03-03T08:53:32.008400Z

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)

reborg 2021-03-03T11:15:18.009500Z

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.

helios 2021-03-04T22:02:51.012Z

ah no, scusa

helios 2021-03-04T22:03:02.012200Z

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

helios 2021-03-04T22:03:34.012500Z

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

reborg 2021-03-04T22:28:18.012700Z

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