|
95 | 95 | (apply dissoc possible-aliases)
|
96 | 96 | (merge-with into project-aliases))))
|
97 | 97 |
|
| 98 | +;; `namespace-aliases-for` was split out from `namespace-aliases`, for a 3rd-party need. |
| 99 | +;; `namespace-aliases-for` is a little more fine-grained, since it accepts files rather than dirs. |
| 100 | +(defn namespace-aliases-for [files ignore-errors?] |
| 101 | + ;; pmap parallelizes a couple things: |
| 102 | + ;; - `pred`, which is IO-intensive |
| 103 | + ;; - `aliases-by-frequencies`, which is moderately CPU-intensive |
| 104 | + (let [[clj-aliases cljs-aliases] (pmap (fn [[dialect pred] corpus] |
| 105 | + (->> corpus |
| 106 | + (filter pred) |
| 107 | + (keep (comp (fn [v] |
| 108 | + (or v |
| 109 | + ;; nullify `false` values for `keep`: |
| 110 | + nil)) |
| 111 | + (util/with-suppressed-errors |
| 112 | + (partial get-libspec-from-file-with-caching dialect) |
| 113 | + ignore-errors?))) |
| 114 | + aliases-by-frequencies)) |
| 115 | + [[:clj (util/with-suppressed-errors |
| 116 | + (some-fn core/clj-file? core/cljc-file?) |
| 117 | + ignore-errors?)] |
| 118 | + [:cljs (util/with-suppressed-errors |
| 119 | + (some-fn core/cljs-file? core/cljc-file?) |
| 120 | + ignore-errors?)]] |
| 121 | + (repeat files))] |
| 122 | + {:clj clj-aliases |
| 123 | + :cljs cljs-aliases})) |
| 124 | + |
98 | 125 | (defn namespace-aliases
|
99 | 126 | "Returns a map of file type to a map of aliases to namespaces
|
100 | 127 |
|
|
110 | 137 | ([ignore-errors? dirs include-tentative-aliases?]
|
111 | 138 | (let [;; fetch the file list just once (as opposed to traversing the project once for each dialect)
|
112 | 139 | files (core/source-files-with-clj-like-extension ignore-errors? dirs)
|
113 |
| - ;; pmap parallelizes a couple things: |
114 |
| - ;; - `pred`, which is IO-intensive |
115 |
| - ;; - `aliases-by-frequencies`, which is moderately CPU-intensive |
116 |
| - [clj-aliases cljs-aliases] (pmap (fn [[dialect pred] corpus] |
117 |
| - (->> corpus |
118 |
| - (filter pred) |
119 |
| - (keep (comp (fn [v] |
120 |
| - (or v |
121 |
| - ;; nullify `false` values for `keep`: |
122 |
| - nil)) |
123 |
| - (util/with-suppressed-errors |
124 |
| - (partial get-libspec-from-file-with-caching dialect) |
125 |
| - ignore-errors?))) |
126 |
| - aliases-by-frequencies)) |
127 |
| - [[:clj (util/with-suppressed-errors |
128 |
| - (some-fn core/clj-file? core/cljc-file?) |
129 |
| - ignore-errors?)] |
130 |
| - [:cljs (util/with-suppressed-errors |
131 |
| - (some-fn core/cljs-file? core/cljc-file?) |
132 |
| - ignore-errors?)]] |
133 |
| - (repeat files)) |
134 |
| - project-aliases {:clj clj-aliases |
135 |
| - :cljs cljs-aliases}] |
| 140 | + project-aliases (namespace-aliases-for files ignore-errors?)] |
136 | 141 | (cond-> project-aliases
|
137 | 142 | include-tentative-aliases? (update :clj add-tentative-aliases :clj files ignore-errors?)
|
138 | 143 | include-tentative-aliases? (update :cljs add-tentative-aliases :cljs files ignore-errors?)))))
|
|
0 commit comments