Skip to content

Commit 1714ab6

Browse files
committed
ansi colorize; add :wagons env key; include s3-wagon-private in worker
1 parent 2736865 commit 1714ab6

File tree

6 files changed

+57
-26
lines changed

6 files changed

+57
-26
lines changed

boot/aether/src/boot/aether.clj

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
[cemerick.pomegranate.aether :as aether]
66
[boot.util :as util]
77
[boot.pod :as pod]
8+
[boot.from.io.aviso.ansi :as ansi]
89
[boot.kahnsort :as ksort])
910
(:import
1011
[java.io File]
@@ -129,8 +130,9 @@
129130
[tree & [prefixes]]
130131
(loop [[[coord branch] & more] (seq tree)]
131132
(when coord
132-
(let [pfx (cond (not prefixes) "" (seq more) "├── " :else "└── ")]
133-
(println (str (apply str prefixes) pfx coord)))
133+
(let [pfx (cond (not prefixes) "" (seq more) "├── " :else "└── ")
134+
pfx (ansi/blue (str (apply str prefixes) pfx))]
135+
(println (str pfx (util/pr-color-str coord))))
134136
(when branch
135137
(let [pfx (cond (not prefixes) "" (seq more) "" :else " ")]
136138
(print-tree branch (concat prefixes (list pfx)))))
@@ -172,14 +174,19 @@
172174

173175
(def ^:private wagon-files (atom #{}))
174176

177+
(defn load-wagon-mappings
178+
[& [mapping]]
179+
(locking wagon-files
180+
(->> (pod/resources "leiningen/wagons.clj")
181+
(remove (partial contains? @wagon-files))
182+
(map #(do (swap! wagon-files conj %)
183+
(->> % io/input-stream slurp read-string)))
184+
(reduce into {})
185+
(mapv (fn [[k v]] (aether/register-wagon-factory! k (eval v))))))
186+
(doseq [[scheme factory] mapping]
187+
(aether/register-wagon-factory! scheme (eval factory))))
188+
175189
(defn add-wagon
176190
[env coord & [mapping]]
177191
(pod/add-dependencies (assoc env :dependencies [coord]))
178-
(let [m (or mapping (locking wagon-files
179-
(->> (pod/resources "leiningen/wagons.clj")
180-
(remove (partial contains? @wagon-files))
181-
(map #(do (swap! wagon-files conj %)
182-
(->> % io/input-stream slurp read-string)))
183-
(reduce into {}))))]
184-
(doseq [[scheme factory] m]
185-
(aether/register-wagon-factory! scheme (eval factory)))))
192+
(load-wagon-mappings mapping))

boot/core/src/boot/core.clj

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,18 @@
5252
n (get new k ::noval)]
5353
(if (not= o n) (on-env! k o n new)))))
5454

55+
(defn- add-wagon!
56+
"FIXME: document this."
57+
([maven-coord scheme-map]
58+
(add-wagon! nil [maven-coord] (get-env) scheme-map))
59+
([old new env]
60+
(add-wagon! old new env nil))
61+
([old new env scheme-map]
62+
(doseq [maven-coord new]
63+
(pod/call-worker
64+
`(boot.aether/add-wagon ~env ~maven-coord ~scheme-map)))
65+
new))
66+
5567
(defn- order-set-env-keys
5668
[kvs]
5769
(let [dk :dependencies]
@@ -103,6 +115,7 @@
103115
(defmethod merge-env! ::default [key old new env] new)
104116
(defmethod merge-env! :src-paths [key old new env] (into (or old #{}) new))
105117
(defmethod merge-env! :dependencies [key old new env] (add-dependencies! old new env))
118+
(defmethod merge-env! :wagons [key old new env] (add-wagon! old new env))
106119

107120
;; ## Boot API Functions
108121
;;
@@ -144,12 +157,6 @@
144157
[dst & [srcs]]
145158
(tmp/add-sync! @tmpregistry dst srcs))
146159

147-
(defn add-wagon!
148-
"FIXME: document this."
149-
[maven-coord & [scheme-map]]
150-
(pod/call-worker
151-
`(boot.aether/add-wagon ~(get-env) ~maven-coord ~scheme-map)))
152-
153160
;; ## Task helpers – managed temp files
154161

155162
(def ^:private consumed-files (atom #{}))

boot/core/src/boot/main.clj

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,10 @@
8282
bootforms (some->> arg0 slurp util/read-string-all)
8383
userforms (when profile? (some->> userscript slurp util/read-string-all))
8484
scriptforms (emit boot? args userforms bootforms)
85-
scriptstr (str (string/join "\n\n" (map pr-str scriptforms)) "\n")]
85+
scriptstr (str (string/join "\n\n" (map pr-str scriptforms)) "\n")
86+
initial-env (->> [:src-paths :tgt-path :dependencies]
87+
(reduce #(if-let [v (opts %2)] (assoc %1 %2 v) %1) {})
88+
(merge {} (:set-env opts)))]
8689

8790
(swap! util/verbose-exceptions + (or (:verbose opts) 0))
8891
(when (:boot-script opts) (util/exit-ok (print scriptstr)))
@@ -94,10 +97,8 @@
9497
(#'core/init!)
9598

9699
(let [tmpf (.getPath (file/tmpfile "boot.user" ".clj"))]
97-
(core/set-env! :boot-user-ns-file tmpf)
98-
(doseq [[k v] (:set-env opts)] (core/set-env! k v))
99-
(doseq [k [:src-paths :tgt-path :dependencies]]
100-
(when-let [v (opts k)] (core/set-env! k v)))
100+
(pod/call-worker `(boot.aether/load-wagon-mappings))
101+
(apply core/set-env! (->> initial-env (mapcat identity) seq))
101102
(try (doto tmpf (spit scriptstr) (load-file))
102103
(catch clojure.lang.Compiler$CompilerException cx
103104
(let [l (.-line cx)

boot/core/src/boot/task/built_in.clj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,21 +90,21 @@
9090
`(boot.notify/failure! ~theme ~failure))
9191
(throw t)))))))
9292

93-
(core/deftask print-deps
93+
(core/deftask pr-deps
9494
"Print the project's dependency graph."
9595
[]
9696
(core/with-pre-wrap
9797
(print (pod/call-worker `(boot.aether/dep-tree ~(core/get-env))))))
9898

99-
(core/deftask print-env
99+
(core/deftask pr-env
100100
"Print the boot environment map."
101101
[]
102-
(core/with-pre-wrap (prn (core/get-env))))
102+
(core/with-pre-wrap (println (util/pr-color-str (core/get-env)))))
103103

104-
(core/deftask print-event
104+
(core/deftask pr-event
105105
"Print the event map."
106106
[]
107-
(core/with-pre-wrap (prn core/*event*)))
107+
(core/with-pre-wrap (println (util/pr-color-str core/*event*))))
108108

109109
(core/deftask wait
110110
"Wait before calling the next handler.

boot/pod/src/boot/util.clj

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
[clojure.java.io :as io]
44
[clojure.set :as set]
55
[clojure.pprint :as pprint]
6+
[boot.from.io.aviso.ansi :as ansi]
67
[boot.from.io.aviso.repl :as repl]
78
[boot.from.io.aviso.exception :as pretty])
89
(:import
@@ -78,6 +79,20 @@
7879
{:properties true :filter repl/standard-frame-filter})
7980
(pretty/write-exception *err* ex {:properties true})))
8081

82+
(defn pr-color-str
83+
[form]
84+
(cond
85+
(symbol? form) (ansi/bold-white (pr-str form))
86+
(keyword? form) (ansi/yellow (pr-str form))
87+
(string? form) (ansi/green (pr-str form))
88+
(char? form) (ansi/red (pr-str form))
89+
(number? form) (ansi/cyan (pr-str form))
90+
(seq? form) (str "(" (apply str (interpose " " (map pr-color-str form))) ")")
91+
(vector? form) (str "[" (apply str (interpose " " (map pr-color-str form))) "]")
92+
(set? form) (str "#{" (apply str (interpose " " (map pr-color-str form))) "}")
93+
(map? form) (str "{" (apply str (interpose " " (map pr-color-str (mapcat identity form)))) "}")
94+
:else (pr-str form)))
95+
8196
(defn auto-flush
8297
[writer]
8398
(proxy [java.io.PrintWriter] [writer]

boot/worker/project.clj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
:dependencies [[org.clojure/clojure "1.6.0" :scope "provided"]
55
[boot/base "2.0.0-SNAPSHOT" :scope "provided"]
66
[boot/aether "2.0.0-SNAPSHOT" :scope "compile"]
7+
[s3-wagon-private "1.1.2" :scope "compile"]
78
[net.java.dev.jna/jna "4.1.0" :scope "compile"]
89
[reply "0.3.4" :scope "compile"]
910
[alandipert/desiderata "1.0.2" :scope "compile"]

0 commit comments

Comments
 (0)