     (when-not (empty? files)
       (let [proto (peek files)
             files (pop files)]
+        ;; TODO Somehow check for :proto-path too?
         (if (or (.exists (io/file "proto" proto))
                 (.exists (io/file target "proto" proto)))
           (recur files)

  [project]
  (when-not (installed?)
    (fetch project)
    (let [source (io/file (:target-dir project) srcdir)]
      (when-not (.exists (io/file source "src" "protoc"))
        (fs/chmod "+x" (io/file source "configure"))
        (fs/chmod "+x" (io/file source "install-sh"))

(defn fetch
  "Fetch protocol-buffer source and unzip it."
  [project]
  (let [target (target project)]
    (when-not (.exists (io/file target srcdir))
      (let [zipped (io/file target zipfile)]
        (println "Downloading" zipfile)
