     (throw (Exception. (str "Failed thing: " args)))))
 
 (defn autotools-handler
-  [{type :type
-    srcdir :srcdir
-    configurations :configurations
+  [{:keys [type srcdir configurations]
     {autoconf-version :version} :autoconf}]
+  
   (when (= type "autotools")
     (let [autoconf-version (or autoconf-version "")
           configurations (or configurations [])
           srcdir (or srcdir "")
           automake "automake"]
-      (do
-        (shell-out (autoconf autoconf-version) :dir srcdir)
-        (shell-out "./configure" :dir srcdir)
-        (shell-out "make" :dir srcdir)
-        (shell-out "make" "check" :dir srcdir)))))
+      (shell-out (autoconf autoconf-version) :dir srcdir)
+      (shell-out "./configure" :dir srcdir)
+      (shell-out "make" :dir srcdir)
+      (shell-out "make" "check" :dir srcdir))))
 
 
 (defn download

(defn untar
  "Untar a file, into directory"
  [tar-file directory]
;  (shell-out "tar" "jxf" tar-file "-C" directory)
  )

(defn tar-get-directory

        {:srcdir (fs/join dir (tar-get-directory tar-file))}))))

(defn repo-handler
  [{:keys [repo subdir] :or {subdir ""}}]
  ; if they dont match, return non-nil and try the next one. If they
  ; do match, return the directory the code was checked out into on
  ; success, and raise an exception on failure.
