fix: handle mirror file errors

This commit is contained in:
Tienson Qin
2026-05-07 18:08:42 +08:00
parent 0a4b59f0e0
commit a256c65cbc
4 changed files with 81 additions and 4 deletions

View File

@@ -51,6 +51,11 @@
(filter #(.isDirectory %))
(map #(.-name %)))))
(defn- path-at-or-under?
[path dir]
(or (= path dir)
(string/starts-with? path (str dir "/"))))
(defn ignored-path?
"Given a graph directory and path, returns truthy value on whether the path is
ignored. Useful for contexts like reading a graph's directory and file watcher
@@ -73,8 +78,9 @@ Rules:
rpath (path/trim-dir-prefix dir path)]
(when (string? path)
(or
(some #(string/starts-with? rpath %)
["." "logseq/.recycle" "logseq/bak" "logseq/version-files" "mirror/markdown"])
(string/starts-with? rpath ".")
(some #(path-at-or-under? rpath %)
["logseq/.recycle" "logseq/bak" "logseq/version-files" "mirror/markdown"])
(contains? #{"logseq/graphs-txid.edn" "logseq/pages-metadata.edn"} rpath)
(some #(string/includes? rpath (str "/" % "/"))
["node_modules"])

View File

@@ -27,11 +27,24 @@
;; Create files that are recognized
(fs/writeFileSync "tmp/test-graph/pages/foo.md" "")
(fs/writeFileSync "tmp/test-graph/journals/2023_05_09.md" "")
(fs/mkdirSync (node-path/join "tmp/test-graph" "mirror" "markdown-notes") #js {:recursive true})
(fs/mkdirSync (node-path/join "tmp/test-graph" "mirror" "markdown2") #js {:recursive true})
(fs/writeFileSync "tmp/test-graph/mirror/markdown-notes/foo.md" "")
(fs/writeFileSync "tmp/test-graph/mirror/markdown2/foo.md" "")
;; Create files that are ignored
(fs/mkdirSync (node-path/join "tmp/test-graph" "logseq" "bak"))
(fs/mkdirSync (node-path/join "tmp/test-graph" "mirror" "markdown" "pages") #js {:recursive true})
(fs/writeFileSync "tmp/test-graph/logseq/bak/baz.md" "")
(fs/writeFileSync "tmp/test-graph/logseq/.gitignore" "")
(fs/writeFileSync "tmp/test-graph/mirror/markdown/pages/foo.md" "")
(is (= ["tmp/test-graph/journals/2023_05_09.md" "tmp/test-graph/pages/foo.md"]
(is (= ["tmp/test-graph/journals/2023_05_09.md"
"tmp/test-graph/mirror/markdown-notes/foo.md"
"tmp/test-graph/mirror/markdown2/foo.md"
"tmp/test-graph/pages/foo.md"]
(common-graph/get-files "tmp/test-graph"))))
(deftest ignored-markdown-mirror-path-honors-directory-boundary-test
(is (common-graph/ignored-path? "tmp/test-graph" "tmp/test-graph/mirror/markdown"))
(is (common-graph/ignored-path? "tmp/test-graph" "tmp/test-graph/mirror/markdown/pages/foo.md"))
(is (not (common-graph/ignored-path? "tmp/test-graph" "tmp/test-graph/mirror/markdown-notes/foo.md")))
(is (not (common-graph/ignored-path? "tmp/test-graph" "tmp/test-graph/mirror/markdown2/foo.md"))))