|
201 | 201 | "Expand dispatch options into tool options, leveraging a cache." |
202 | 202 | [options] |
203 | 203 | (let [{:keys [tool-name cache-dir cache-digest]} options |
204 | | - cache-dir' (when cache-dir |
205 | | - (fs/expand-home cache-dir)) |
206 | | - digest (when cache-dir' |
207 | | - (or cache-digest |
208 | | - (cache/classpath-digest options))) |
209 | | - cached (when digest |
210 | | - (cache/read-from-cache cache-dir' tool-name digest)) |
211 | | - result (if cached |
212 | | - cached |
213 | | - (let [expanded (impl/expand-tool-options options)] |
214 | | - (when cache-dir' |
215 | | - (cache/write-to-cache cache-dir' tool-name digest expanded)) |
216 | | - expanded))] |
217 | | - (merge result |
218 | | - {:cache-digest digest} |
219 | | - (select-keys options [:tool-name :doc :arguments :tool-summary :pre-dispatch])))) |
| 204 | + tool-name' (or tool-name |
| 205 | + (impl/default-tool-name) |
| 206 | + (throw (ex-info "No :tool-name specified" {:options options}))) |
| 207 | + cache-dir' (when cache-dir |
| 208 | + (fs/expand-home cache-dir)) |
| 209 | + digest (when cache-dir' |
| 210 | + (or cache-digest |
| 211 | + (cache/classpath-digest options))) |
| 212 | + cached-command-root (when digest |
| 213 | + (cache/read-from-cache cache-dir' tool-name' digest)) |
| 214 | + command-root (if cached-command-root |
| 215 | + cached-command-root |
| 216 | + (let [built-command-root (impl/build-command-root tool-name' options)] |
| 217 | + (when cache-dir' |
| 218 | + (cache/write-to-cache cache-dir' tool-name' digest built-command-root)) |
| 219 | + built-command-root))] |
| 220 | + (merge {:tool-name tool-name' |
| 221 | + :cache-digest digest |
| 222 | + :command-root command-root} |
| 223 | + (select-keys options [:doc :arguments :tool-summary :pre-dispatch])))) |
220 | 224 |
|
221 | 225 | (defn- dispatch* |
222 | 226 | "Called (indirectly/anonymously) from a tool handler to process remaining command line arguments." |
|
0 commit comments