 
 (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)

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

(defn ls-files
  [repo tag dir]

  (when-not (exists? repos-dir)
    (mkdir repos-dir))
  (clone-or-pull! "https://github.com/clojure/clojurescript")
  (clone-or-pull! "https://github.com/clojure/clojure")
  (clone-or-pull! "https://github.com/clojure/tools.reader"))

(defn get-current-repo-tag
  [repo]
