Skip to content

Commit dd05ea6

Browse files
committed
More succint output + more fine grained steps
1 parent 07ecd90 commit dd05ea6

File tree

2 files changed

+70
-30
lines changed

2 files changed

+70
-30
lines changed

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
## Added
44

55
- Inject shadow-cljs deps when needed and not already present
6-
7-
## Fixed
6+
- Support for more fine grained step customization with `start-steps`/`end-steps`/`pre-steps`/`post-steps`
87

98
## Changed
109

1110
- Check deps before injecting extra deps (cider, nrepl, shadow, etc). Declared
1211
deps versions always get precedence.
12+
- More succinct output while starting up
13+
- Show command line invocations that are being run
1314

1415
# 0.22.110-alpha (2024-01-17 / 95c22dc)
1516

src/lambdaisland/launchpad.clj

Lines changed: 67 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -45,21 +45,42 @@
4545
(defn error [& args] (apply println (java.util.Date.) "[ERROR]" args))
4646

4747
(defn shellquote [a]
48-
(cond
49-
(and (str/includes? a "\"")
50-
(str/includes? a "'"))
51-
(str "'"
52-
(str/replace a "'" "'\"'\"'")
53-
"'")
54-
55-
(str/includes? a "'")
56-
(str "\"" a "\"")
57-
58-
(re-find #"\s|\"" a)
59-
(str "'" a "'")
60-
61-
:else
62-
a))
48+
(let [a (str a)]
49+
(cond
50+
(and (str/includes? a "\"")
51+
(str/includes? a "'"))
52+
(str "'"
53+
(str/replace a "'" "'\"'\"'")
54+
"'")
55+
56+
(str/includes? a "'")
57+
(str "\"" a "\"")
58+
59+
(re-find #"\s|\"" a)
60+
(str "'" a "'")
61+
62+
:else
63+
a)))
64+
65+
(def ansi-fg-color-codes
66+
{:black 30
67+
:red 31
68+
:green 32
69+
:yellow 33
70+
:blue 34
71+
:magenta 35
72+
:cyan 36
73+
:white 37})
74+
75+
(defn ansi-bold [& parts]
76+
(str "\u001b[1m" (str/join " " parts) "\u001b[0m"))
77+
78+
(defn ansi-fg [color & parts]
79+
(str "\u001b[" (if (keyword? color)
80+
(get ansi-fg-color-codes color)
81+
color) "m"
82+
(str/join " " parts)
83+
"\u001b[0m"))
6384

6485
(defn free-port
6586
"Find a free TCP port"
@@ -396,16 +417,20 @@
396417
ctx)
397418

398419
(defn print-summary [ctx]
399-
(println "Aliases:")
400-
(doseq [a (:aliases ctx)] (println "-" a))
401-
#_(apply println "Java flags: " (:java-args ctx))
402-
(println "\nMiddleware: " )
403-
(doseq [a (:middleware ctx)] (println "-" a))
404-
(print "\nExtra Deps:")
405-
(pprint/print-table (map (fn [[k v]]
406-
{:lib k
407-
:coords v})
408-
(:extra-deps ctx)))
420+
(println (ansi-fg :green "Launching")
421+
(ansi-bold (ansi-fg :green "Clojure"))
422+
(ansi-fg :green "on nREPL port")
423+
(ansi-fg :cyan (:nrepl-port ctx)))
424+
;; (println "Aliases:")
425+
;; (doseq [a (:aliases ctx)] (println "-" a))
426+
;; #_(apply println "Java flags: " (:java-args ctx))
427+
;; (println "\nMiddleware: " )
428+
;; (doseq [a (:middleware ctx)] (println "-" a))
429+
;; (print "\nExtra Deps:")
430+
;; (pprint/print-table (map (fn [[k v]]
431+
;; {:lib k
432+
;; :coords v})
433+
;; (:extra-deps ctx)))
409434
ctx)
410435

411436
(defn pipe-process-output
@@ -443,9 +468,10 @@
443468
(.directory working-dir))
444469
_ (.putAll (.environment proc-builder) (or env (:env ctx)))
445470
color (mod (hash (or prefix (first cmd))) 8)
446-
prefix (str "\u001b[" (+ 30 color) "m[" (or prefix (first cmd)) "]\u001b[0m ")
471+
prefix (ansi-fg (+ 30 color) (str "[" (or prefix (first cmd)) "] "))
447472
process (pipe-process-output (.start proc-builder) prefix)
448473
ctx (update ctx :processes (fnil conj []) process)]
474+
(apply println (str prefix "$") (map shellquote cmd))
449475
(if background?
450476
ctx
451477
(let [exit (if timeout-ms
@@ -522,8 +548,21 @@
522548
(defn process-steps [ctx steps]
523549
(reduce #(%2 %1) ctx steps))
524550

525-
(defn main [{:keys [steps] :or {steps default-steps} :as opts}]
526-
(let [ctx (process-steps (initial-context opts) steps)
551+
(defn main [{:keys [steps
552+
start-steps
553+
end-steps
554+
pre-steps
555+
post-steps] :as opts}]
556+
(let [ctx (process-steps (initial-context opts)
557+
(or steps
558+
(concat
559+
start-steps
560+
before-steps
561+
pre-steps
562+
[start-clojure-process]
563+
post-steps
564+
after-steps
565+
end-steps)))
527566
processes (:processes ctx)]
528567
(.addShutdownHook (Runtime/getRuntime)
529568
(Thread. (fn [] (run! #(.destroy %) processes))))

0 commit comments

Comments
 (0)