Fall back to defn-level help summaries if ns-level are not found.

This commit is contained in:
Phil Hagelberg 2014-01-20 10:49:14 -08:00
parent 93a2ffa85d
commit 0c47e54b9e

View file

@ -5,12 +5,24 @@
[leiningen.core.main :as main]
[bultitude.core :as b]))
(defn- resolve-task [task-name]
(try (let [task-ns (doto (symbol (str "leiningen." task-name)) require)
task (ns-resolve task-ns (symbol task-name))]
[task-ns task])
(catch java.io.FileNotFoundException e
[nil nil])))
(defn- fallback-fn-docstring [task-sym]
(-> task-sym name resolve-task second meta :doc))
(def docstrings
(memoize
(fn []
(apply hash-map
(mapcat
(fn [form] [ (second form) (b/doc-from-ns-form form) ])
(fn [form] [(second form)
(or (b/doc-from-ns-form form)
(fallback-fn-docstring (second form)))])
(b/namespace-forms-on-classpath :prefix "leiningen"))))))
(def ^{:private true
@ -55,13 +67,6 @@
[(str "\nRun `lein help " (:name (meta task))
" $SUBTASK` for subtask details.")])))))
(defn- resolve-task [task-name]
(try (let [task-ns (doto (symbol (str "leiningen." task-name)) require)
task (ns-resolve task-ns (symbol task-name))]
[task-ns task])
(catch java.io.FileNotFoundException e
[nil nil])))
(defn- resolve-subtask [task-name subtask-name]
(let [[_ task] (resolve-task task-name)]
(some #(if (= (symbol subtask-name) (:name (meta %))) %)