Просмотр исходного кода

Add CI job for invalid dicts

And tweak fn so that it actually fails
Gabriel Horner 4 лет назад
Родитель
Сommit
02c0489a26
3 измененных файлов с 38 добавлено и 15 удалено
  1. 17 0
      .github/workflows/build.yml
  2. 4 4
      bb.edn
  3. 17 11
      scripts/src/logseq/tasks/lang.clj

+ 17 - 0
.github/workflows/build.yml

@@ -17,6 +17,7 @@ env:
   JAVA_VERSION: '8'
   # This is the latest node version we can run.
   NODE_VERSION: '16'
+  BABASHKA_VERSION: '0.7.3'
 
 jobs:
 
@@ -75,6 +76,22 @@ jobs:
           yarn cljs:test
           node static/tests.js
 
+  lint:
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+
+      - name: Setup Babashka
+        uses: turtlequeue/[email protected]
+        with:
+          babashka-version: ${{ env.BABASHKA_VERSION }}
+
+      - name: Lint invalid dictionary keys
+        run: bb lang:invalid-dicts
+
+
   e2e-test:
     runs-on: ubuntu-latest
 

+ 4 - 4
bb.edn

@@ -1,13 +1,13 @@
 {:paths ["scripts/src"]
  :tasks
  {lang:list
-  logseq.tasks.lang/lang-list
+  logseq.tasks.lang/list-langs
 
   lang:missing
-  logseq.tasks.lang/lang-missing
+  logseq.tasks.lang/list-missing
 
-  lang:invalid
-  logseq.tasks.lang/lang-invalid
+  lang:invalid-dicts
+  logseq.tasks.lang/invalid-dicts
 
   dev:watch
   logseq.tasks.dev/watch

+ 17 - 11
scripts/src/logseq/tasks/lang.clj

@@ -13,7 +13,7 @@
   []
   (rewrite-clj/var-sexp ["languages" "src/main/frontend/dicts.cljs"]))
 
-(defn lang-list
+(defn list-langs
   "List translated langagues with their number of translations"
   []
   (let [dicts (get-dicts)
@@ -34,7 +34,7 @@
     s
     (str (subs s 0 length) "...")))
 
-(defn lang-missing
+(defn list-missing
   "List missing translations for a given language"
   [& args]
   (let [lang (or (keyword (first args))
@@ -55,16 +55,22 @@
                    :string-to-translate (shorten v 50)}))
            task-util/print-table))))
 
-(defn lang-invalid
+(defn invalid-dicts
   "Lists translation keys that are invalid"
   []
   (let [dicts (get-dicts)
         ;; For now defined as :en but clj-kondo analysis would be more thorough
-        valid-keys (set (keys (dicts :en)))]
-    (->> (dissoc dicts :en)
-         (mapcat (fn [[lang get-dicts]]
-                   (map
-                    #(hash-map :language lang :invalid-key %)
-                    (set/difference (set (keys get-dicts))
-                                    valid-keys))))
-         task-util/print-table)))
+        valid-keys (set (keys (dicts :en)))
+        invalid-dicts
+        (->> (dissoc dicts :en)
+             (mapcat (fn [[lang get-dicts]]
+                       (map
+                        #(hash-map :language lang :invalid-key %)
+                        (set/difference (set (keys get-dicts))
+                                        valid-keys)))))]
+    (if (empty? invalid-dicts)
+      (println "All dicts have valid keys!")
+      (do
+        (println "Invalid dict keys found:")
+        (task-util/print-table invalid-dicts)
+        (System/exit 1)))))