         (abort "No project.clj found in this directory."))))
   ([] (read-project "project.clj")))
 
-(def aliases {"--help" "help" "-h" "help" "-?" "help" "-v" "version"
-              "--version" "version" "überjar" "uberjar"})
+(def aliases (atom {"--help" "help" "-h" "help" "-?" "help" "-v" "version"
+                    "--version" "version" "überjar" "uberjar"}))
 
 (def no-project-needed (atom #{"new" "help" "version"}))
 

                                  :root root#))))
     (def ~(symbol (name project-name)) project)))

;; So it doesn't need to be fully-qualified in project.clj
(with-ns 'clojure.core (use ['leiningen.core :only ['defproject]]))

(defn abort [msg]
  (println msg)
  (System/exit 1))


(defn -main
  ([& [task & args]]
     (let [task (or (@aliases task) task "help")
           args (if (@no-project-needed task)
                  args
                  (conj args (read-project)))
