|
141 | 141 | (defn find-free-nrepl-port [ctx]
|
142 | 142 | (assoc ctx :nrepl-port (free-port)))
|
143 | 143 |
|
| 144 | +(defn maybe-read-edn [f] |
| 145 | + (when (.exists f) (edn/read-string (slurp f)))) |
| 146 | + |
144 | 147 | (defn read-deps-edn [ctx]
|
145 | 148 | (let [deps-edn (edn/read-string (slurp "deps.edn") )
|
146 |
| - deps-local (when (.exists (io/file "deps.local.edn")) |
147 |
| - (edn/read-string (slurp "deps.local.edn") ))] |
| 149 | + deps-system (maybe-read-edn |
| 150 | + (io/file (System/getProperty "user.home") ".clojure" "deps.edn")) |
| 151 | + |
| 152 | + deps-local (maybe-read-edn |
| 153 | + (io/file "deps.local.edn"))] |
148 | 154 |
|
149 | 155 | (-> ctx
|
150 |
| - (update :aliases (fnil into []) (:launchpad/aliases deps-local)) |
151 |
| - (update :main-opts (fnil into []) (:launchpad/main-opts deps-local)) |
| 156 | + (update :aliases (fnil into []) (concat |
| 157 | + (:launchpad/aliases deps-system) |
| 158 | + (:launchpad/aliases deps-local))) |
| 159 | + (update :main-opts (fnil into []) (concat |
| 160 | + (:launchpad/main-opts deps-system) |
| 161 | + (:launchpad/main-opts deps-local))) |
152 | 162 | (assoc :deps-edn (merge-with (fn [a b]
|
153 | 163 | (cond
|
154 | 164 | (and (map? a) (map? b))
|
|
402 | 412 | dir
|
403 | 413 | (recur (.getParent (io/file dir))))))
|
404 | 414 |
|
| 415 | +(defn initial-context [{:keys [steps executable project-root] |
| 416 | + :or {steps default-steps |
| 417 | + project-root (find-project-root)}}] |
| 418 | + {:main-opts *command-line-args* |
| 419 | + :executable (or executable |
| 420 | + (str/replace *file* |
| 421 | + (str project-root "/") |
| 422 | + "")) |
| 423 | + :project-root project-root}) |
| 424 | + |
| 425 | +(defn process-steps [ctx steps] |
| 426 | + (reduce #(%2 %1) ctx steps)) |
| 427 | + |
405 | 428 | (defn main
|
406 |
| - ([{:keys [steps executable project-root] |
407 |
| - :or {steps default-steps |
408 |
| - project-root (find-project-root)}}] |
409 |
| - |
410 |
| - (let [ctx (reduce #(%2 %1) |
411 |
| - {:main-opts *command-line-args* |
412 |
| - :executable (or executable |
413 |
| - (str/replace *file* |
414 |
| - (str project-root "/") |
415 |
| - "")) |
416 |
| - :project-root project-root} |
417 |
| - steps) |
| 429 | + ([{:keys [steps] :or {steps default-steps} :as opts}] |
| 430 | + (let [ctx (process-steps (initial-context opts) steps) |
418 | 431 | process (:clojure-process ctx)]
|
419 | 432 | (.addShutdownHook (Runtime/getRuntime)
|
420 | 433 | (Thread. (fn [] (.destroy (:proc process)))))
|
|
0 commit comments