diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 065e280791..0418b69510 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ env: JAVA_VERSION: '8' # This is the latest node version we can run. NODE_VERSION: '16' - BABASHKA_VERSION: '0.7.7' + BABASHKA_VERSION: '0.8.1' jobs: @@ -112,6 +112,9 @@ jobs: - name: Lint datalog rules run: scripts/lint_rules.clj + - name: Load nbb compatible namespaces + run: bb test:load-nbb-compatible-namespaces + e2e-test: runs-on: ubuntu-latest diff --git a/bb.edn b/bb.edn index 9421947101..c13a73d454 100644 --- a/bb.edn +++ b/bb.edn @@ -4,6 +4,8 @@ {:git/url "https://github.com/babashka/spec.alpha" :sha "1a841c4cc1d4f6dab7505a98ed2d532dd9d56b78"} medley/medley {:mvn/version "1.3.0"}} + :pods + {clj-kondo/clj-kondo {:version "2022.02.09"}} :tasks {dev:watch logseq.tasks.dev/watch @@ -22,6 +24,9 @@ dev:validate-local-storage logseq.tasks.spec/validate-local-storage + test:load-nbb-compatible-namespaces + logseq.tasks.nbb/load-compatible-namespaces + lang:list logseq.tasks.lang/list-langs diff --git a/scripts/src/logseq/tasks/nbb.clj b/scripts/src/logseq/tasks/nbb.clj new file mode 100644 index 0000000000..d26604697e --- /dev/null +++ b/scripts/src/logseq/tasks/nbb.clj @@ -0,0 +1,24 @@ +(ns logseq.tasks.nbb + (:require [pod.borkdude.clj-kondo :as clj-kondo])) + +(defn- fetch-meta-namespaces + "Return namespaces with metadata" + [paths] + (let [paths (or (seq paths) ["src"]) + {{:keys [namespace-definitions]} :analysis} + (clj-kondo/run! + {:lint paths + :config {:output {:analysis {:namespace-definitions {:meta true}}}}}) + matches (keep (fn [m] + (when (:meta m) + {:ns (:name m) + :meta (:meta m)})) + namespace-definitions)] + matches)) + +(defn load-compatible-namespaces + [] + (let [namespaces (filter #(get-in % [:meta :nbb-compatible]) + (fetch-meta-namespaces ["src/main"]))] + (assert (seq namespaces) + "There must be some nbb-compatible namespaces"))) diff --git a/src/main/frontend/db/default.cljs b/src/main/frontend/db/default.cljs index a4f7f6e794..053e8ec4b7 100644 --- a/src/main/frontend/db/default.cljs +++ b/src/main/frontend/db/default.cljs @@ -1,4 +1,4 @@ -(ns frontend.db.default +(ns ^:nbb-compatible frontend.db.default (:require [clojure.string :as string])) (defonce built-in-pages-names diff --git a/src/main/frontend/db/rules.cljc b/src/main/frontend/db/rules.cljc index 98bbd02536..be16016246 100644 --- a/src/main/frontend/db/rules.cljc +++ b/src/main/frontend/db/rules.cljc @@ -1,4 +1,4 @@ -(ns ^:bb-compatible frontend.db.rules) +(ns ^:bb-compatible ^:nbb-compatible frontend.db.rules) (def rules ;; rule "parent" is optimized for child node -> parent node nesting queries diff --git a/src/main/frontend/db_schema.cljs b/src/main/frontend/db_schema.cljs index 5eb1aad2bb..afd9b06660 100644 --- a/src/main/frontend/db_schema.cljs +++ b/src/main/frontend/db_schema.cljs @@ -1,4 +1,4 @@ -(ns frontend.db-schema) +(ns ^:nbb-compatible frontend.db-schema) (defonce version 1) (defonce ast-version 1)