         [(str (:name (meta subtask))) (:doc (meta subtask))])
       [#'help #'install #'uninstall])))
 
-(defn help
-  "Show plugin subtasks"
-  []
+(defn help []
   (let [help-map (get-help-map)
         longest-key-length (apply max (map count (keys help-map)))]
-    (println (str "Plugin tasks available:\n"))
-    (doall (map
-             (fn [[k v]] (println (formatted-help k v longest-key-length)))
-             help-map))
-    (println)))
+    (string/join "\n" (concat
+                       ["Manage user-level plugins.\n"
+                        "Subtasks available:\n"]
+                       (for [[subtask doc] help-map]
+                         (formatted-help subtask doc longest-key-length))))))
 
-
-(defn plugin
-  ([] (help))
-  ([_] (help))
-  ([_ _] (help))
+(defn ^{:help-arglists '([subtask project-name version])} plugin
+  ([] (println (help)))
+  ([_] (plugin))
+  ([_ _] (plugin))
   ([subtask project-name version]
     (case subtask
       "install" (install project-name version)
       "uninstall" (uninstall project-name version)
       (help))))
-

    (.delete (file plugins-path
               (plugin-standalone-filename group name version)))))

(defn- formatted-docstring [command docstring padding]
  (apply str
    (replace

                              extract-jar
                              get-default-uberjar-name)]
        [clojure.java.io :only (file)])
  (:require [leiningen.install]
            [clojure.string :as string])
  (:import [java.util.zip ZipOutputStream]
           [java.io File FileOutputStream]))

