diff --git a/deps.edn b/deps.edn index ac22ad20b0..de5960fa79 100644 --- a/deps.edn +++ b/deps.edn @@ -37,6 +37,7 @@ logseq/graph-parser {:local/root "deps/graph-parser"} logseq/outliner {:local/root "deps/outliner"} logseq/publishing {:local/root "deps/publishing"} + logseq/cli {:local/root "deps/cli"} logseq/shui {:local/root "deps/shui"} metosin/malli {:mvn/version "0.16.1"} com.cognitect/transit-cljs {:mvn/version "0.8.280"} diff --git a/deps/cli/deps.edn b/deps/cli/deps.edn new file mode 100644 index 0000000000..718516f32c --- /dev/null +++ b/deps/cli/deps.edn @@ -0,0 +1,7 @@ +{:paths ["src"] + :deps + {logseq/outliner {:local/root "../outliner"}} + + :aliases + {:clj-kondo {:replace-deps {clj-kondo/clj-kondo {:mvn/version "2024.09.27"}} + :main-opts ["-m" "clj-kondo.main"]}}} diff --git a/deps/cli/src/logseq/cli/common/graph.cljs b/deps/cli/src/logseq/cli/common/graph.cljs index 93dccd8348..b6ca74b902 100644 --- a/deps/cli/src/logseq/cli/common/graph.cljs +++ b/deps/cli/src/logseq/cli/common/graph.cljs @@ -1,4 +1,4 @@ -(ns logseq.cli.common.graph +(ns ^:node-only logseq.cli.common.graph "Graph related fns shared between CLI and electron" (:require ["fs-extra" :as fs-extra] ["os" :as os] @@ -14,15 +14,15 @@ (string/replace "+3A+" ":") (string/replace "++" "/")))) -(defn- get-db-based-graphs-dir +(defn get-db-graphs-dir + "Directory where DB graphs are stored" [] - (let [dir (node-path/join (os/homedir) "logseq" "graphs")] - (fs-extra/ensureDirSync dir) - dir)) + (node-path/join (os/homedir) "logseq" "graphs")) (defn get-db-based-graphs [] - (let [dir (get-db-based-graphs-dir)] + (let [dir (get-db-graphs-dir)] + (fs-extra/ensureDirSync dir) (->> (common-graph/read-directories dir) (remove (fn [s] (= s common-config/unlinked-graphs-dir))) (map graph-name->path) diff --git a/deps/db/src/logseq/db/common/sqlite_cli.cljs b/deps/db/src/logseq/db/common/sqlite_cli.cljs index 0dda4438ef..a085cf00fc 100644 --- a/deps/db/src/logseq/db/common/sqlite_cli.cljs +++ b/deps/db/src/logseq/db/common/sqlite_cli.cljs @@ -112,4 +112,5 @@ ;; $ORIGINAL_PWD used by bb tasks to correct current dir (node-path/join (or js/process.env.ORIGINAL_PWD ".") %))] ((juxt node-path/dirname node-path/basename) (resolve-path' graph-dir-or-path))) + ;; TODO: Reuse with get-db-graphs-dir when there is a db ns that is usable by electron i.e. no better-sqlite3 [(node-path/join (os/homedir) "logseq" "graphs") graph-dir-or-path]))) diff --git a/src/electron/electron/db.cljs b/src/electron/electron/db.cljs index fe47ab4a37..27912ef83b 100644 --- a/src/electron/electron/db.cljs +++ b/src/electron/electron/db.cljs @@ -1,44 +1,39 @@ (ns electron.db "Provides SQLite dbs for electron and manages files of those dbs" - (:require ["electron" :refer [app]] - ["fs-extra" :as fs] + (:require ["fs-extra" :as fs] ["path" :as node-path] + [logseq.cli.common.graph :as cli-common-graph] [logseq.common.config :as common-config] [logseq.db.common.sqlite :as common-sqlite])) -(defn get-graphs-dir - [] - (let [path (.getPath ^object app "home")] - (node-path/join path "logseq" "graphs"))) - (defn ensure-graphs-dir! [] - (fs/ensureDirSync (get-graphs-dir))) + (fs/ensureDirSync (cli-common-graph/get-db-graphs-dir))) (defn ensure-graph-dir! [db-name] (ensure-graphs-dir!) - (let [graph-dir (node-path/join (get-graphs-dir) (common-sqlite/sanitize-db-name db-name))] + (let [graph-dir (node-path/join (cli-common-graph/get-db-graphs-dir) (common-sqlite/sanitize-db-name db-name))] (fs/ensureDirSync graph-dir) graph-dir)) (defn save-db! [db-name data] - (let [[_db-name db-path] (common-sqlite/get-db-full-path (get-graphs-dir) db-name)] + (let [[_db-name db-path] (common-sqlite/get-db-full-path (cli-common-graph/get-db-graphs-dir) db-name)] (fs/writeFileSync db-path data))) (defn get-db [db-name] (let [_ (ensure-graph-dir! db-name) - [_db-name db-path] (common-sqlite/get-db-full-path (get-graphs-dir) db-name)] + [_db-name db-path] (common-sqlite/get-db-full-path (cli-common-graph/get-db-graphs-dir) db-name)] (when (fs/existsSync db-path) (fs/readFileSync db-path)))) (defn unlink-graph! [repo] (let [db-name (common-sqlite/sanitize-db-name repo) - path (node-path/join (get-graphs-dir) db-name) - unlinked (node-path/join (get-graphs-dir) common-config/unlinked-graphs-dir) + path (node-path/join (cli-common-graph/get-db-graphs-dir) db-name) + unlinked (node-path/join (cli-common-graph/get-db-graphs-dir) common-config/unlinked-graphs-dir) new-path (node-path/join unlinked db-name) new-path-exists? (fs/existsSync new-path) new-path' (if new-path-exists? diff --git a/src/electron/electron/utils.cljs b/src/electron/electron/utils.cljs index 73e4c0a58a..b247a78c31 100644 --- a/src/electron/electron/utils.cljs +++ b/src/electron/electron/utils.cljs @@ -6,9 +6,9 @@ [cljs-bean.core :as bean] [clojure.string :as string] [electron.configs :as cfgs] - [electron.db :as db] [electron.logger :as logger] [logseq.db.sqlite.util :as sqlite-util] + [logseq.cli.common.graph :as cli-common-graph] [promesa.core :as p])) (defonce *win (atom nil)) ;; The main window @@ -255,7 +255,7 @@ "required by all internal state in the electron section" [graph-name] (cond (string/starts-with? graph-name sqlite-util/db-version-prefix) - (node-path/join (db/get-graphs-dir) (string/replace-first graph-name sqlite-util/db-version-prefix "")) + (node-path/join (cli-common-graph/get-db-graphs-dir) (string/replace-first graph-name sqlite-util/db-version-prefix "")) (string/includes? graph-name "logseq_local_") (string/replace-first graph-name "logseq_local_" ""))) @@ -263,7 +263,7 @@ (defn get-graph-name "Reverse `get-graph-dir`" [graph-dir] - (if (= (db/get-graphs-dir) (node-path/dirname graph-dir)) + (if (= (cli-common-graph/get-db-graphs-dir) (node-path/dirname graph-dir)) (str sqlite-util/db-version-prefix (node-path/basename graph-dir)) (str "logseq_local_" graph-dir))))