2015-12-15 37 views
3

說我有一個香草project.clj像我可以在REPL的Lein項目中查找內容嗎?

(defproject myservice "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :mailing-list {:name "[email protected]" :post "[email protected]"} 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 

    :dependencies [[org.clojure/clojure "1.6.0"] 
       [ring/ring-core "1.4.0"] 
       [ring/ring-jetty-adapter "1.4.0"] 
       [compojure "1.4.0"] 
       [ring/ring-defaults "0.1.5"] 
       [org.clojure/tools.logging "0.3.1"] 
       [clj-http "2.0.0"]] 

    :plugins [[lein-ring "0.9.7"]] 

    :ring {:handler myservice.core/standalone-app 
     :port 3000} 
    :profiles { 
      :uberjar {:ring {:handler myservice.core/app}}} 
) 

lein repl,我可以從project.clj查找值?怎麼樣?當然,我的盲人黑客沒有工作?

user=> (:mailing-list project) 
CompilerException java.lang.RuntimeException: Unable to resolve symbol: project in this context, compiling:(/private/var/folders/1g/fnytl2x93sx6hp2f1rsf4h1r5xtqv_/T/form-init6671981825845237047.clj:1:1) 

下面的問題是我可以使用project.clj中的項目映射嗎?就像我想拉取郵件列表一樣:命名並替換爲:deb:maintainer?

:deb 
    {:toDir "target" 
    :package "mysevice" 
    :maintainer {:name "Meeples", :email "[email protected]"} 
    ... 
    } 

我敢肯定,你可以告訴我是那種-的新本,但project.clj僅僅是可執行的Clojure,不是嗎?如果我知道項目地圖的名稱,我應該可以查詢它,對吧?

+1

這不是一個答案,但[此線程(http://stackoverflow.com/questions/16270805/how-to - 獲取當前版本的clojure-project-in-the-repl)提供了一些適用於您的用例的解決方案,比如sl the project.clj或「def-out」你感興趣的部分。 – acron

+0

嗯。這不是那麼簡單,是嗎?我想我應該問一個不同的問題。我真正想做的是從郵件列表映射中提取一個值,並將其用作:deb::maintainer中的:email值。 –

+0

哦,在這種情況下,你可以'確定'的東西 - 讓我做一個正確的答案,2秒。 – acron

回答

1

可以def數據,你通常會和它們包括使用~

(def mailing-list {:name "[email protected]" :post "[email protected]"}) 

(defproject myservice "0.1.0-SNAPSHOT" 
    :description "FIXME: write description" 
    :url "http://example.com/FIXME" 
    :mailing-list ~mailing-list 
    :license {:name "Eclipse Public License" 
      :url "http://www.eclipse.org/legal/epl-v10.html"} 

    :dependencies [[org.clojure/clojure "1.6.0"] 
       [ring/ring-core "1.4.0"] 
       [ring/ring-jetty-adapter "1.4.0"] 
       [compojure "1.4.0"] 
       [ring/ring-defaults "0.1.5"] 
       [org.clojure/tools.logging "0.3.1"] 
       [clj-http "2.0.0"]] 

    :plugins [[lein-ring "0.9.7"]] 

    :ring {:handler myservice.core/standalone-app 
     :port 3000} 
    :profiles { 
      :uberjar {:ring {:handler myservice.core/app}}} 
    :deb { 
     :toDir "target" 
     :package "mysevice" 
     :maintainer {:name "Meeples", :email (:name ~mailing-list)}}) 
+0

啊。但是當然。 –