Parse required clojure version out of project.clj to avoid duplication.

This commit is contained in:
Colin Jones 2011-01-12 16:38:04 -06:00
parent a987607134
commit 8a9a957a62
2 changed files with 17 additions and 3 deletions

View File

@ -1,4 +1,4 @@
(defproject functional-koans "0.1.0" (defproject functional-koans "0.2.0"
:description "The functional koans" :description "The functional koans"
:dependencies [[org.clojure/clojure "1.3.0-alpha3"] :dependencies [[org.clojure/clojure "1.3.0-alpha3"]
[jline "0.9.94"]]) [jline "0.9.94"]])

View File

@ -1,6 +1,7 @@
(ns path-to-enlightenment (ns path-to-enlightenment
(:use [clojure.test]) (:use [clojure.test])
(:require [clojure.set])) (:require [clojure.set]
[clojure.string]))
(def __ nil) (def __ nil)
(def ___ (fn [& args] nil)) (def ___ (fn [& args] nil))
@ -37,7 +38,20 @@
(throw (Exception. (str "Clojure version " required-major "." (throw (Exception. (str "Clojure version " required-major "."
required-minor " or higher required.")))))) required-minor " or higher required."))))))
(defn parse-required-version []
(let [rdr (clojure.lang.LineNumberingPushbackReader.
(java.io.FileReader. (java.io.File. "project.clj")))
project-form (read rdr)
version-string (->> project-form
(drop 3)
(apply hash-map)
:dependencies
(into {})
('org.clojure/clojure))]
(map read-string
(take 3 (clojure.string/split version-string #"[\.\-]")))))
(defn run [] (defn run []
(require-version [1 3]) (require-version (parse-required-version))
(apply load (doall (map (partial str "koans/") ordered-koans))) (apply load (doall (map (partial str "koans/") ordered-koans)))
(println "You have achieved clojure enlightenment. Namaste.")) (println "You have achieved clojure enlightenment. Namaste."))