Print error for missing tasks instead of stacktrace

> lein help nohelpforyou

Prints a FileNotFoundException. It would be more useful to simply
print that the task does not exist.
This commit is contained in:
William Roe 2012-04-13 16:27:34 +01:00
parent 55935d01e9
commit 393de28437

View file

@ -50,9 +50,11 @@
longest-key-length))))))) longest-key-length)))))))
(defn- resolve-task [task-name] (defn- resolve-task [task-name]
(let [task-ns (doto (symbol (str "leiningen." task-name)) require) (try (let [task-ns (doto (symbol (str "leiningen." task-name)) require)
task (ns-resolve task-ns (symbol task-name))] task (ns-resolve task-ns (symbol task-name))]
[task-ns task])) [task-ns task])
(catch java.io.FileNotFoundException e
[nil nil])))
(defn- static-help [name] (defn- static-help [name]
(when-let [resource (io/resource (format "leiningen/help/%s" name))] (when-let [resource (io/resource (format "leiningen/help/%s" name))]
@ -63,14 +65,16 @@
in its namespace." in its namespace."
[project task-name] [project task-name]
(let [aliases (merge @main/aliases (:aliases project)) (let [aliases (merge @main/aliases (:aliases project))
[task-ns task] (resolve-task (aliases task-name task-name)) [task-ns task] (resolve-task (aliases task-name task-name))]
help-fn (ns-resolve task-ns 'help)] (if task
(str (or (and (not= task-ns 'leiningen.help) help-fn (help-fn)) (let [help-fn (ns-resolve task-ns 'help)]
(:doc (meta task)) (str (or (and (not= task-ns 'leiningen.help) help-fn (help-fn))
(:doc (meta (find-ns task-ns)))) (:doc (meta task))
(subtask-help-for task-ns task) (:doc (meta (find-ns task-ns))))
(when (some seq (get-arglists task)) (subtask-help-for task-ns task)
(str "\n\nArguments: " (pr-str (get-arglists task))))))) (when (some seq (get-arglists task))
(str "\n\nArguments: " (pr-str (get-arglists task))))))
(format "Task: '%s' not found" task-name))))
(defn help-summary-for [task-ns] (defn help-summary-for [task-ns]
(try (let [task-name (last (.split (name task-ns) "\\.")) (try (let [task-name (last (.split (name task-ns) "\\."))