Browse Source

Find namespaces for nbb-compatible CI step

Gabriel Horner 3 years ago
parent
commit
d6082156c5

+ 4 - 1
.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
 

+ 5 - 0
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
 

+ 24 - 0
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")))

+ 1 - 1
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

+ 1 - 1
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

+ 1 - 1
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)