mirror of
https://github.com/logseq/logseq.git
synced 2026-04-24 22:25:01 +00:00
enhance: start CLI dep and implement list command
Also move common db graph list to shared ns and move common prefix constants to common-config
This commit is contained in:
committed by
Gabriel Horner
parent
12e1f35cc4
commit
887d91d2ac
13
deps/cli/cli.mjs
vendored
Normal file
13
deps/cli/cli.mjs
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import { loadFile, addClassPath } from '@logseq/nbb-logseq'
|
||||
import { fileURLToPath } from 'url';
|
||||
import { dirname, resolve } from 'path';
|
||||
|
||||
const __dirname = fileURLToPath(dirname(import.meta.url));
|
||||
addClassPath(resolve(__dirname, 'src'));
|
||||
const { main } = await loadFile(resolve(__dirname, 'src/logseq/cli.cljs'));
|
||||
|
||||
// Expects to be called as node X.js ...
|
||||
const args = process.argv.slice(2)
|
||||
main.apply(null, args);
|
||||
6
deps/cli/nbb.edn
vendored
Normal file
6
deps/cli/nbb.edn
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
{:paths ["src"]
|
||||
:deps
|
||||
{logseq/outliner
|
||||
{:local/root "../outliner"}
|
||||
io.github.nextjournal/nbb-test-runner
|
||||
{:git/sha "b379325cfa5a3306180649da5de3bf5166414e71"}}}
|
||||
14
deps/cli/package.json
vendored
Normal file
14
deps/cli/package.json
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"name": "@logseq/cli",
|
||||
"version": "0.1.0",
|
||||
"description": "Logseq CLI",
|
||||
"bin": {
|
||||
"logseq": "cli.mjs"
|
||||
},
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@logseq/nbb-logseq": "logseq/nbb-logseq#feat-db-v24",
|
||||
"better-sqlite3": "11.10.0",
|
||||
"fs-extra": "^11.3.0"
|
||||
}
|
||||
}
|
||||
31
deps/cli/src/logseq/cli.cljs
vendored
Normal file
31
deps/cli/src/logseq/cli.cljs
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
(ns logseq.cli
|
||||
"Main ns for Logseq CLI"
|
||||
(:require [babashka.cli :as cli]
|
||||
[clojure.string :as string]
|
||||
[logseq.cli.commands.graph :as cli-graph]))
|
||||
|
||||
;; TODO
|
||||
(defn- query [m]
|
||||
(prn (assoc m :fn :query)))
|
||||
|
||||
(defn- format-commands [{:keys [table]}]
|
||||
(let [table (mapv (fn [{:keys [cmds desc]}]
|
||||
(cond-> [(string/join " " cmds)]
|
||||
desc (conj desc)))
|
||||
(filter (comp seq :cmds) table))]
|
||||
(cli/format-table {:rows table})))
|
||||
|
||||
(declare table)
|
||||
(defn- help [_m]
|
||||
(println "Usage: logseq [command] [options]\n\nCommands:")
|
||||
(println (format-commands {:table table})))
|
||||
|
||||
(def table
|
||||
[{:cmds ["list"] :fn cli-graph/list-graphs :desc "List graphs"}
|
||||
{:cmds ["query"] :fn query :args->opts [:graph] :desc "Query graph"}
|
||||
{:cmds [] :fn help}])
|
||||
|
||||
(defn -main [& args]
|
||||
(cli/dispatch table args {:coerce {:depth :long}}))
|
||||
|
||||
#js {:main -main}
|
||||
22
deps/cli/src/logseq/cli/commands/graph.cljs
vendored
Normal file
22
deps/cli/src/logseq/cli/commands/graph.cljs
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
(ns logseq.cli.commands.graph
|
||||
"Graph related commands"
|
||||
(:require ["path" :as node-path]
|
||||
[clojure.string :as string]
|
||||
[logseq.cli.common.graph :as cli-common-graph]
|
||||
[logseq.common.config :as common-config]))
|
||||
|
||||
(defn list-graphs
|
||||
[]
|
||||
(let [[db-graphs* file-graphs*] ((juxt filter remove) #(string/starts-with? % common-config/db-version-prefix)
|
||||
(cli-common-graph/get-db-based-graphs))
|
||||
db-graphs (->> db-graphs*
|
||||
(map #(string/replace-first % common-config/db-version-prefix ""))
|
||||
sort)
|
||||
file-graphs (->> file-graphs*
|
||||
(map #(string/replace-first % common-config/file-version-prefix ""))
|
||||
(map node-path/basename)
|
||||
sort)]
|
||||
(println "DB Graphs:")
|
||||
(println (string/join "\n" db-graphs))
|
||||
(println "\nFile Graphs:")
|
||||
(println (string/join "\n" file-graphs))))
|
||||
32
deps/cli/src/logseq/cli/common/graph.cljs
vendored
Normal file
32
deps/cli/src/logseq/cli/common/graph.cljs
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
(ns logseq.cli.common.graph
|
||||
"Graph related fns shared between CLI and electron"
|
||||
(:require ["fs-extra" :as fs-extra]
|
||||
["os" :as os]
|
||||
["path" :as node-path]
|
||||
[clojure.string :as string]
|
||||
[logseq.common.config :as common-config]
|
||||
[logseq.common.graph :as common-graph]))
|
||||
|
||||
(defn graph-name->path
|
||||
[graph-name]
|
||||
(when graph-name
|
||||
(-> graph-name
|
||||
(string/replace "+3A+" ":")
|
||||
(string/replace "++" "/"))))
|
||||
|
||||
(defn- get-db-based-graphs-dir
|
||||
[]
|
||||
(let [dir (node-path/join (os/homedir) "logseq" "graphs")]
|
||||
(fs-extra/ensureDirSync dir)
|
||||
dir))
|
||||
|
||||
(defn get-db-based-graphs
|
||||
[]
|
||||
(let [dir (get-db-based-graphs-dir)]
|
||||
(->> (common-graph/read-directories dir)
|
||||
(remove (fn [s] (= s common-config/unlinked-graphs-dir)))
|
||||
(map graph-name->path)
|
||||
(map (fn [s]
|
||||
(if (string/starts-with? s common-config/file-version-prefix)
|
||||
s
|
||||
(str common-config/db-version-prefix s)))))))
|
||||
296
deps/cli/yarn.lock
vendored
Normal file
296
deps/cli/yarn.lock
vendored
Normal file
@@ -0,0 +1,296 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@logseq/nbb-logseq@logseq/nbb-logseq#feat-db-v24":
|
||||
version "1.2.173-feat-db-v24"
|
||||
resolved "https://codeload.github.com/logseq/nbb-logseq/tar.gz/3d5b78b0382c7253bf9874c1f38586dd338434f4"
|
||||
dependencies:
|
||||
import-meta-resolve "^4.1.0"
|
||||
|
||||
base64-js@^1.3.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
|
||||
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
|
||||
|
||||
better-sqlite3@11.10.0:
|
||||
version "11.10.0"
|
||||
resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-11.10.0.tgz#2b1b14c5acd75a43fd84d12cc291ea98cef57d98"
|
||||
integrity sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==
|
||||
dependencies:
|
||||
bindings "^1.5.0"
|
||||
prebuild-install "^7.1.1"
|
||||
|
||||
bindings@^1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
|
||||
integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
|
||||
dependencies:
|
||||
file-uri-to-path "1.0.0"
|
||||
|
||||
bl@^4.0.3:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
|
||||
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
|
||||
dependencies:
|
||||
buffer "^5.5.0"
|
||||
inherits "^2.0.4"
|
||||
readable-stream "^3.4.0"
|
||||
|
||||
buffer@^5.5.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
|
||||
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
|
||||
dependencies:
|
||||
base64-js "^1.3.1"
|
||||
ieee754 "^1.1.13"
|
||||
|
||||
chownr@^1.1.1:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
|
||||
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
|
||||
|
||||
decompress-response@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
|
||||
integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
|
||||
dependencies:
|
||||
mimic-response "^3.1.0"
|
||||
|
||||
deep-extend@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
||||
|
||||
detect-libc@^2.0.0:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8"
|
||||
integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==
|
||||
|
||||
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
|
||||
version "1.4.5"
|
||||
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c"
|
||||
integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==
|
||||
dependencies:
|
||||
once "^1.4.0"
|
||||
|
||||
expand-template@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
|
||||
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
|
||||
|
||||
file-uri-to-path@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
|
||||
integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
|
||||
|
||||
fs-constants@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
||||
|
||||
fs-extra@^11.3.0:
|
||||
version "11.3.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d"
|
||||
integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.0"
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
github-from-package@0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
|
||||
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
|
||||
|
||||
graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
||||
version "4.2.11"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
|
||||
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
|
||||
|
||||
ieee754@^1.1.13:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
|
||||
|
||||
import-meta-resolve@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#f9db8bead9fafa61adb811db77a2bf22c5399706"
|
||||
integrity sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==
|
||||
|
||||
inherits@^2.0.3, inherits@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
ini@~1.3.0:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||
|
||||
jsonfile@^6.0.1:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
|
||||
integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
|
||||
dependencies:
|
||||
universalify "^2.0.0"
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
mimic-response@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
|
||||
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
|
||||
|
||||
minimist@^1.2.0, minimist@^1.2.3:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
||||
|
||||
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
|
||||
version "0.5.3"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
||||
|
||||
napi-build-utils@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-2.0.0.tgz#13c22c0187fcfccce1461844136372a47ddc027e"
|
||||
integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==
|
||||
|
||||
node-abi@^3.3.0:
|
||||
version "3.75.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.75.0.tgz#2f929a91a90a0d02b325c43731314802357ed764"
|
||||
integrity sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==
|
||||
dependencies:
|
||||
semver "^7.3.5"
|
||||
|
||||
once@^1.3.1, once@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
prebuild-install@^7.1.1:
|
||||
version "7.1.3"
|
||||
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.3.tgz#d630abad2b147443f20a212917beae68b8092eec"
|
||||
integrity sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==
|
||||
dependencies:
|
||||
detect-libc "^2.0.0"
|
||||
expand-template "^2.0.3"
|
||||
github-from-package "0.0.0"
|
||||
minimist "^1.2.3"
|
||||
mkdirp-classic "^0.5.3"
|
||||
napi-build-utils "^2.0.0"
|
||||
node-abi "^3.3.0"
|
||||
pump "^3.0.0"
|
||||
rc "^1.2.7"
|
||||
simple-get "^4.0.0"
|
||||
tar-fs "^2.0.0"
|
||||
tunnel-agent "^0.6.0"
|
||||
|
||||
pump@^3.0.0:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d"
|
||||
integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==
|
||||
dependencies:
|
||||
end-of-stream "^1.1.0"
|
||||
once "^1.3.1"
|
||||
|
||||
rc@^1.2.7:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||
dependencies:
|
||||
deep-extend "^0.6.0"
|
||||
ini "~1.3.0"
|
||||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
readable-stream@^3.1.1, readable-stream@^3.4.0:
|
||||
version "3.6.2"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
|
||||
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
|
||||
dependencies:
|
||||
inherits "^2.0.3"
|
||||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
safe-buffer@^5.0.1, safe-buffer@~5.2.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
||||
|
||||
semver@^7.3.5:
|
||||
version "7.7.2"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
|
||||
integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
|
||||
|
||||
simple-concat@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
|
||||
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
||||
|
||||
simple-get@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
|
||||
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
|
||||
dependencies:
|
||||
decompress-response "^6.0.0"
|
||||
once "^1.3.1"
|
||||
simple-concat "^1.0.0"
|
||||
|
||||
string_decoder@^1.1.1:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
|
||||
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
|
||||
dependencies:
|
||||
safe-buffer "~5.2.0"
|
||||
|
||||
strip-json-comments@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==
|
||||
|
||||
tar-fs@^2.0.0:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.3.tgz#fb3b8843a26b6f13a08e606f7922875eb1fbbf92"
|
||||
integrity sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
mkdirp-classic "^0.5.2"
|
||||
pump "^3.0.0"
|
||||
tar-stream "^2.1.4"
|
||||
|
||||
tar-stream@^2.1.4:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
|
||||
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
|
||||
dependencies:
|
||||
bl "^4.0.3"
|
||||
end-of-stream "^1.4.1"
|
||||
fs-constants "^1.0.0"
|
||||
inherits "^2.0.3"
|
||||
readable-stream "^3.1.1"
|
||||
|
||||
tunnel-agent@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
|
||||
integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
universalify@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
|
||||
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
|
||||
|
||||
util-deprecate@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
|
||||
4
deps/common/src/logseq/common/config.cljs
vendored
4
deps/common/src/logseq/common/config.cljs
vendored
@@ -30,7 +30,11 @@
|
||||
|
||||
(defonce asset-protocol "assets://")
|
||||
|
||||
(defonce db-version-prefix "logseq_db_")
|
||||
(defonce file-version-prefix "logseq_local_")
|
||||
|
||||
(defonce local-assets-dir "assets")
|
||||
(defonce unlinked-graphs-dir "Unlinked graphs")
|
||||
|
||||
(defonce favorites-page-name "$$$favorites")
|
||||
(defonce views-page-name "$$$views")
|
||||
|
||||
9
deps/db/src/logseq/db/common/sqlite.cljs
vendored
9
deps/db/src/logseq/db/common/sqlite.cljs
vendored
@@ -4,7 +4,8 @@
|
||||
(:require ["path" :as node-path]
|
||||
[clojure.string :as string]
|
||||
[datascript.core :as d]
|
||||
[logseq.db.sqlite.util :as sqlite-util]))
|
||||
[logseq.db.sqlite.util :as sqlite-util]
|
||||
[logseq.common.config :as common-config]))
|
||||
|
||||
(defn create-kvs-table!
|
||||
"Creates a sqlite table for use with datascript.storage if one doesn't exist"
|
||||
@@ -17,16 +18,14 @@
|
||||
(or (d/restore-conn storage)
|
||||
(d/create-conn schema {:storage storage})))
|
||||
|
||||
(defonce file-version-prefix "logseq_local_")
|
||||
|
||||
(defn local-file-based-graph?
|
||||
[s]
|
||||
(and (string? s)
|
||||
(string/starts-with? s file-version-prefix)))
|
||||
(string/starts-with? s common-config/file-version-prefix)))
|
||||
|
||||
(defn sanitize-db-name
|
||||
[db-name]
|
||||
(if (string/starts-with? db-name file-version-prefix)
|
||||
(if (string/starts-with? db-name common-config/file-version-prefix)
|
||||
(-> db-name
|
||||
(string/replace ":" "+3A+")
|
||||
(string/replace "/" "++"))
|
||||
|
||||
2
deps/db/src/logseq/db/sqlite/util.cljs
vendored
2
deps/db/src/logseq/db/sqlite/util.cljs
vendored
@@ -13,7 +13,7 @@
|
||||
[logseq.db.frontend.property :as db-property]
|
||||
[logseq.db.frontend.property.type :as db-property-type]))
|
||||
|
||||
(defonce db-version-prefix "logseq_db_")
|
||||
(defonce db-version-prefix common-config/db-version-prefix)
|
||||
|
||||
(def ^:private write-handlers (cljs-bean.transit/writer-handlers))
|
||||
(def ^:private read-handlers {})
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
(defn kondo-git-changes
|
||||
"Run clj-kondo across dirs and only for files that git diff detects as unstaged changes"
|
||||
[]
|
||||
(let [kondo-dirs ["src" "deps/common" "deps/db" "deps/graph-parser" "deps/outliner" "deps/publishing"]
|
||||
(let [kondo-dirs ["src" "deps/common" "deps/db" "deps/graph-parser" "deps/outliner" "deps/publishing" "deps/cli"]
|
||||
dir-regex (re-pattern (str "^(" (string/join "|" kondo-dirs) ")"))
|
||||
dir-to-files (->> (shell {:out :string} "git diff --name-only")
|
||||
:out
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
(:require ["electron" :refer [app]]
|
||||
["fs-extra" :as fs]
|
||||
["path" :as node-path]
|
||||
[logseq.common.config :as common-config]
|
||||
[logseq.db.common.sqlite :as common-sqlite]))
|
||||
|
||||
(defn get-graphs-dir
|
||||
@@ -33,13 +34,11 @@
|
||||
(when (fs/existsSync db-path)
|
||||
(fs/readFileSync db-path))))
|
||||
|
||||
(def unlinked-graphs-dir "Unlinked graphs")
|
||||
|
||||
(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) unlinked-graphs-dir)
|
||||
unlinked (node-path/join (get-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?
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
[electron.utils :as utils]
|
||||
[electron.window :as win]
|
||||
[goog.functions :refer [debounce]]
|
||||
[logseq.cli.common.graph :as cli-common-graph]
|
||||
[logseq.common.graph :as common-graph]
|
||||
[logseq.db :as ldb]
|
||||
[logseq.db.common.sqlite :as common-sqlite]
|
||||
@@ -204,51 +205,28 @@
|
||||
(bean/->js {:path path
|
||||
:files files})))
|
||||
|
||||
(defn- graph-name->path
|
||||
[graph-name]
|
||||
(when graph-name
|
||||
(-> graph-name
|
||||
(string/replace "+3A+" ":")
|
||||
(string/replace "++" "/"))))
|
||||
|
||||
(defn- get-graphs-dir
|
||||
(defn- get-file-graphs-dir
|
||||
"Get cache directory for file graphs"
|
||||
[]
|
||||
(let [dir (if utils/ci?
|
||||
(.resolve node-path js/__dirname "../tmp/graphs")
|
||||
(.join node-path (.homedir os) ".logseq" "graphs"))]
|
||||
(node-path/join (os/homedir) ".logseq" "graphs"))]
|
||||
(fs-extra/ensureDirSync dir)
|
||||
dir))
|
||||
|
||||
(defn- get-db-based-graphs-dir
|
||||
[]
|
||||
(let [dir (.join node-path (.homedir os) "logseq" "graphs")]
|
||||
(fs-extra/ensureDirSync dir)
|
||||
dir))
|
||||
|
||||
(defn- get-file-based-graphs
|
||||
(defn get-file-based-graphs
|
||||
"Returns all graph names in the cache directory (starting with `logseq_local_`)"
|
||||
[]
|
||||
(let [dir (get-graphs-dir)]
|
||||
(let [dir (get-file-graphs-dir)]
|
||||
(->> (common-graph/readdir dir)
|
||||
(remove #{dir})
|
||||
(map #(node-path/basename % ".transit"))
|
||||
(map graph-name->path))))
|
||||
(map cli-common-graph/graph-name->path))))
|
||||
|
||||
(defn- get-db-based-graphs
|
||||
[]
|
||||
(let [dir (get-db-based-graphs-dir)]
|
||||
(->> (common-graph/read-directories dir)
|
||||
(remove (fn [s] (= s db/unlinked-graphs-dir)))
|
||||
(map graph-name->path)
|
||||
(map (fn [s]
|
||||
(if (string/starts-with? s common-sqlite/file-version-prefix)
|
||||
s
|
||||
(str sqlite-util/db-version-prefix s)))))))
|
||||
|
||||
(defn- get-graphs
|
||||
(defn get-graphs
|
||||
"Returns all graph names"
|
||||
[]
|
||||
(let [db-graphs (get-db-based-graphs)
|
||||
(let [db-graphs (cli-common-graph/get-db-based-graphs)
|
||||
file-graphs (get-file-based-graphs)]
|
||||
(distinct (concat db-graphs file-graphs))))
|
||||
|
||||
@@ -297,7 +275,7 @@
|
||||
(defmethod handle :deleteGraph [_window [_ graph graph-name _db-based?]]
|
||||
(when graph-name
|
||||
(db/unlink-graph! graph)
|
||||
(let [old-transit-path (node-path/join (get-graphs-dir) (str (common-sqlite/sanitize-db-name graph) ".transit"))]
|
||||
(let [old-transit-path (node-path/join (get-file-graphs-dir) (str (common-sqlite/sanitize-db-name graph) ".transit"))]
|
||||
(when (fs/existsSync old-transit-path)
|
||||
(fs/unlinkSync old-transit-path)))))
|
||||
|
||||
@@ -314,7 +292,7 @@
|
||||
|
||||
(defn clear-cache!
|
||||
[window]
|
||||
(let [graphs-dir (get-graphs-dir)]
|
||||
(let [graphs-dir (get-file-graphs-dir)]
|
||||
(fs-extra/removeSync graphs-dir))
|
||||
|
||||
(let [path (.getPath ^object app "userData")]
|
||||
|
||||
@@ -343,7 +343,7 @@
|
||||
(defonce idb-db-prefix "logseq-db/")
|
||||
(defonce local-db-prefix "logseq_local_")
|
||||
(defonce local-handle "handle")
|
||||
(defonce db-version-prefix sqlite-util/db-version-prefix)
|
||||
(defonce db-version-prefix common-config/db-version-prefix)
|
||||
|
||||
(defn db-graph-name
|
||||
[repo-with-prefix]
|
||||
|
||||
Reference in New Issue
Block a user