summaryrefslogtreecommitdiff
path: root/QoL/switch-proxy.clj
blob: 4911b71c26829b6c0bc9e83bb3dcc7cb69359aed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/env bb

(require '[clojure.java.shell :refer [sh]]
         '[babashka.process :refer [process tokenize]])

(defn process-running? [name]
  (let [{:keys [exit]} (sh "pgrep" "-x" name)]
    (= exit 0)))

(defn kill-process [name]
  (when (process-running? name)
    (println (str "Stopping " name "..."))
    (sh "pkill" "-x" name)))

(defn start-daemon [cmd-str]
  (println (str "Starting " cmd-str "..."))
  (process (tokenize cmd-str) {:out :discard :err :discard :detach true}))

(let [sb-running (process-running? "sing-box")
      mi-running (process-running? "mihomo")]

  (cond
    mi-running
    (do
      (kill-process "mihomo")
      (start-daemon "sing-box run -c /Users/eltrac/.config/sing-box/config.json"))

    :else
    (do
      (kill-process "sing-box")
      (start-daemon "mihomo")))

  (println "Switch complete."))