Remove duplicate task output from help task.

Consolidate IO in help.
This commit is contained in:
Phil Hagelberg 2009-11-27 20:13:36 -08:00
parent 777ce00787
commit 173da8ee74

View file

@ -2,29 +2,29 @@
"Display a list of tasks or help for a given task."
(:use [clojure.contrib.find-namespaces :only [find-namespaces-on-classpath]]))
(def tasks (filter #(re-find #"^leiningen\.(?!core)" (name %))
(find-namespaces-on-classpath)))
(def tasks (set (filter #(re-find #"^leiningen\.(?!core)" (name %))
(find-namespaces-on-classpath))))
;; affected by clojure ticket #130: bug of AOT'd namespaces losing metadata
(defn help-for [task]
(let [task-ns (symbol (str "leiningen." task))
_ (require task-ns)
task (ns-resolve task-ns (symbol task))]
(println (or (:doc (meta task))
(:doc (meta (find-ns task-ns)))))))
(or (:doc (meta task))
(:doc (meta (find-ns task-ns))))))
(defn help-summary-for [task-ns]
(require task-ns)
(let [task-name (last (.split (name task-ns) "\\."))]
(println task-name (apply str (repeat (- 7 (count task-name)) " "))
"-" (:doc (meta (find-ns task-ns))))))
(str task-name (apply str (repeat (- 8 (count task-name)) " "))
" - " (:doc (meta (find-ns task-ns))))))
(defn help [project & [task]]
(if task
(help-for task)
(println (help-for task))
(do (println "Leiningen is a build tool for Clojure.\n")
(println "Several tasks are available:")
(doseq [task-ns tasks]
(help-summary-for task-ns))
(println (help-summary-for task-ns)))
(println "\nRun lein help $TASK for details.")
(println "See http://github.com/technomancy/leiningen as well."))))