       [: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)]))))
 

                   ~'*args*  (:arguments parsed#)
                   ~'*usage* #(print ~cli-doc)]
               ~@(mapv (partial apply argspec->assert) argspecs)
               (if-not ~'help (do ~@body) (~'*usage*))))
           (with-meta ~varmeta)))))


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

(defn- argspec->deprecation-warning
  ([short long type doc]
   (argspec->deprecation-warning short long nil type doc))
  ([short long optarg type doc]
   (if-let [deprecated (deprecated short)]
     `(when-not (nil? ~long)
        (util/warn ~(format "option %s is deprecated. %s\n" long (if (string? deprecated) deprecated "")))))))

(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) (cond-> doc (deprecated short) deprecated-doc)]))

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