April 26th, 2015

Кложурное

Как в программе показать -version, прочитав его из project.clj?

project.clj:
(def my-version "9.99")
(defproject my-project my-version
  :manifest {"Implementation-Version" ~my-version}
   etc)


core.clj:
(defn implementation-version []
  ;; Кажем версию софтины. Пропертя работает в lein repl, а getPackage().getImplementationVersion()
  ;; работает в JAR
  (or (System/getProperty "my.version")
         ;; Как сюда не хардкодить класс? Я думал, *ns*, но нет
      (-> (eval 'my.package.core) .getPackage .getImplementationVersion)))

(defn -main [& args]
  (println "I am the project, version" (implementation-version)))