mirror of
https://github.com/logseq/logseq.git
synced 2026-05-17 17:32:35 +00:00
43 lines
1.3 KiB
Clojure
43 lines
1.3 KiB
Clojure
(ns frontend.handler.shell
|
|
"Git related handler fns"
|
|
(:require [clojure.string :as string]
|
|
[electron.ipc :as ipc]
|
|
[frontend.handler.notification :as notification]
|
|
[frontend.util :as util]
|
|
[logseq.common.util :as common-util]))
|
|
|
|
(defn run-cli-command!
|
|
[command args]
|
|
(ipc/ipc :runCli {:command command
|
|
:args args
|
|
:returnResult true}))
|
|
|
|
(def commands-denylist
|
|
#{"rm" "mv" "rename" "dd" ">" "command" "sudo"})
|
|
|
|
(defn run-command!
|
|
[command]
|
|
(let [[command args]
|
|
(if (and (string? command) (string/includes? command " "))
|
|
(common-util/split-first " " command)
|
|
[command ""])
|
|
command (and command (string/lower-case command))
|
|
args (-> args str string/trim)]
|
|
(when-not (string/blank? command)
|
|
(cond
|
|
(contains? commands-denylist command)
|
|
(notification/show!
|
|
[:div (str command " is too dangerous!")]
|
|
:error)
|
|
|
|
:else
|
|
(run-cli-command! command args)))))
|
|
|
|
(defn run-cli-command-wrapper!
|
|
[command content]
|
|
(let [args (case command
|
|
"alda" (util/format "play -c \"%s\"" content)
|
|
;; TODO: plugin slot
|
|
content)]
|
|
(run-cli-command! command args)))
|