Add CI job for invalid dicts

And tweak fn so that it actually fails
This commit is contained in:
Gabriel Horner
2022-01-27 17:40:11 -05:00
parent 8998e9435b
commit 02c0489a26
3 changed files with 38 additions and 15 deletions

View File

@@ -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/setup-babashka@v1.3.0
with:
babashka-version: ${{ env.BABASHKA_VERSION }}
- name: Lint invalid dictionary keys
run: bb lang:invalid-dicts
e2e-test:
runs-on: ubuntu-latest

8
bb.edn
View File

@@ -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

View File

@@ -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)))))