   (mv      [this from-path to-path])
   (cp      [this src-file dest-tmpfile]))
 
-(defrecord TmpFile [dir path id]
+(defrecord TmpFile [dir path id time]
   ITmpFile
   (id   [this] id)
   (dir  [this] dir)
   (path [this] path)
+  (time [this] time)
   (file [this] (io/file dir path)))
 
 (defrecord TmpDir [dir user input output]

(ns boot.tmpdir
  (:require
    [clojure.java.io  :as io]
    [clojure.set      :as set]

  [dir]
  (let [file->rel-path #(file/relative-to dir %)
        file->kv       #(let [p (str (file->rel-path %))]
                          [p (TmpFile. dir p (digest/md5 %) (.lastModified %))])]
    (->> dir file-seq (filter (memfn isFile)) (map file->kv) (into {}))))

(defn- add-blob!
