Skip to content

Commit 07ac499

Browse files
committed
Support setting :lauchpad/main-opts in .clojure/deps.edn
1 parent 1f9f5a2 commit 07ac499

File tree

1 file changed

+29
-16
lines changed

1 file changed

+29
-16
lines changed

src/lambdaisland/launchpad.clj

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -141,14 +141,24 @@
141141
(defn find-free-nrepl-port [ctx]
142142
(assoc ctx :nrepl-port (free-port)))
143143

144+
(defn maybe-read-edn [f]
145+
(when (.exists f) (edn/read-string (slurp f))))
146+
144147
(defn read-deps-edn [ctx]
145148
(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"))]
148154

149155
(-> 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)))
152162
(assoc :deps-edn (merge-with (fn [a b]
153163
(cond
154164
(and (map? a) (map? b))
@@ -402,19 +412,22 @@
402412
dir
403413
(recur (.getParent (io/file dir))))))
404414

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+
405428
(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)
418431
process (:clojure-process ctx)]
419432
(.addShutdownHook (Runtime/getRuntime)
420433
(Thread. (fn [] (.destroy (:proc process)))))

0 commit comments

Comments
 (0)