 (defn run-task
   "Execute the specified task after executing all prerequisite tasks."
   ([name] (swap! tasks run-task name) nil)
-  ([tasks name]
-     (let [task (tasks name)]
-       (when (nil? task) (abort "Unknown task:" name))
-       (if (:run? task)
-         tasks
-         (let [tasks (reduce run-task tasks (task :deps))]
-           (doseq [action (task :actions)]
-             (binding [project      @project
-                       current-task name]
-               (action)))
-           (when (verbose? opts) (println " " name "complete."))
-           (assoc-in tasks [name :run?] true))))))
+  ([tasks form]
+     (if (list? form)
+       (binding [project @project]
+         ((eval form)) ; excute anonymous dependency
+         tasks)
+       (let [name form, task (tasks name)]
+         (when (nil? task) (abort "Unknown task:" name))
+         (if (:run? task)
+           tasks
+           (let [tasks (reduce run-task tasks (task :deps))]
+             (doseq [action (task :actions)]
+               (binding [project @project, current-task name]
+                 (action)))
+             (when (verbose? opts) (println " " name "complete."))
+             (assoc-in tasks [name :run?] true)))))))
 
 (defmacro bake [& body]
   "Execute body in a fork of the jvm with the classpath of your project."

                         :source-path    (str ~root "/src")
                         :test-path      (str ~root "/test")))))))

(defmacro deftask
  "Define a cake task. Each part of the body is optional. Task definitions can
   be broken up among multiple deftask calls and even multiple files:

     (do-something-else))"
  [name & body]
  (let [[deps body] (if (= '=> (first body))
                      (split-with dependency? (rest body))
                      [() body])
        [doc actions] (if (string? (first body))
                        (split-at 1 body)
