       [:id           (keyword long)
        :long-opt     (str "--" long)
        :required     (when optarg (str optarg))
-       :desc         (format-doc optarg type doc)
+       :desc         (format-doc short optarg type doc)
        :parse-fn     `(#'parse-fn ~(when optarg (list 'quote optarg)))
        :assoc-fn     `(#'assoc-fn ~(when optarg (list 'quote optarg)) '~type)]))))
 

          (throw (IllegalArgumentException.
                   ~(format "option :%s must be of type %s" long type)))))))

(defn- argspec->summary
  ([short long type doc]
     (argspec->summary short long nil type doc))
  ([short long optarg type doc]
     [(str ":" long) (str (when (:! (meta type)) "^:! ")) (str type) doc]))

(defn- argspec-seq [args]
  (when (seq args)

        (symbol? type) (assoc m k (parse-type type v))
        (coll? type)   (update-in m [k] (fnil conj (empty type)) (parse-type (first type) v))))))

(defn- deprecated [short]
  (:deprecated (meta short)))

(defn- deprecated-doc [doc]
  (str "DEPRECATED: " doc))

(defn- format-doc [short optarg type doc]
  (let [atom? (symbol? type)
        flag? (not optarg)
        incr? (and flag? (= 'int type))
        docstring (cond
                    incr? (format "Increase %s" (decap doc))
                    flag? doc
                    atom? (format "Set %s to %s." (depunc (decap doc)) optarg)
                    :else (let [f "Conj %s onto %s"
                                v ((parse-fn optarg) (str optarg))]
                            (format f (if (string? v) v (pr-str (mapv symbol v))) (decap doc))))]
    (cond-> docstring
      (deprecated short) deprecated-doc)))

(defn- argspec->cli-argspec
  ([short long type doc]
