 
 (defmacro with-checkout!
   [cljs-tag & body]
-  `(let [{clj-tag# :clj-tag
-          clj-version# :clj-version
-          gclosure-lib# :gclosure-lib} (cljs-tag->dep-releases ~cljs-tag)]
+  `(let [{clj-tag#          :clj-tag
+          clj-version#      :clj-version
+          treader-tag#      :treader-tag
+          treader-version#  :treader-version
+          gclosure-lib#     :gclosure-lib}    (cljs-tag->dep-releases ~cljs-tag)]
+
      (checkout-repo! "clojurescript" ~cljs-tag)
      (checkout-repo! "clojure" clj-tag#)
+     (when treader-tag#
+       (checkout-repo! "tools.reader" treader-tag#))
+
      (binding [*cljs-tag*     ~cljs-tag
                *cljs-date*    (repo-tag-date "clojurescript" ~cljs-tag)
                *cljs-version* (cljs-tag->version ~cljs-tag)

          (>= cljs-num 1847) (second (re-find #"(?m)^GCLOSURE_LIB_RELEASE=\"(.*)\"" bootstrap))
          (>= cljs-num 1798) (second (re-find #"google-closure-library-(.*)\.jar" bootstrap))
          (>= cljs-num 0)    (second (re-find #"closure-library-(.*)\.zip" bootstrap)))
        ]
    {:clj-version clojure
     :clj-tag (str "clojure-" clojure)
     :gclosure-lib gclosure-lib}))

(defn checkout-repo!

  [version]
  (when-let [[_ n] (re-find #"\d\.\d-(.*)" version)]
    (str "r" n)))

(defn treader-tag->version
  [tag]
  (when-let [[_ v] (re-find #"tools\.reader-(.*)")]
    v))

(defn treader-version->tag
  [version]
  (when version
    (str "tools.reader-" version)))

(defn ls-files
  [repo tag dir]
