 "
     :arglists '([name doc-string? [params*] body])
     :added "0.1"}
-  deftask [name & decl ]
-  (let [name (keyword name)
+  deftask [tname & decl ]
+  (let [tname (keyword tname)
         m (if (string? (first decl))
             (next decl)
             decl)


      Please see https://github.com/killme2008/clojure-control/wiki/Define-clusters
     "
    :arglists '([name & options])
    :added "0.1"}
  defcluster [name & args]
  (let [name (keyword name)]
    `(let [m# (apply hash-map ~(cons 'list (unquote-cluster args)))]
       (swap! clusters assoc ~name (assoc m# :name ~name)))))

(defmacro ^:private when-exit
  ([test error]

                               item))
                           body)]
    (when-not (vector? arguments)
      (throw (IllegalArgumentException. (format "Task %s's arguments must be a vector" (name tname)))))
    (when *debug*
      (prn tname "new-body:" new-body))
    `(swap! tasks
            assoc
            ~tname
            ~(list 'fn
                   (vec (concat '[host user cluster] arguments))
                   (cons 'do new-body)))))
