Normalize format of :deploy-repositories and :plugin-repositories too.

Fixes #752.
This commit is contained in:
Phil Hagelberg 2012-08-28 09:15:21 -07:00
parent 1843348d12
commit b5ea5a0f09
4 changed files with 25 additions and 15 deletions

View file

@ -67,20 +67,27 @@
:subprocess))}))))
(defn- de-dupe-repo [[repositories seen?] [id settings]]
(let [settings (if (string? settings) {:url settings} settings)]
;; repositories from user profiles can be just credentials, so check :url
(if (or (seen? id) (not (:url settings)))
[repositories seen?]
[(conj repositories [id settings]) (conj seen? id)])))
;; repositories from user profiles can be just credentials, so check :url
(if (or (seen? id) (not (:url settings)))
[repositories seen?]
[(conj repositories [id settings]) (conj seen? id)]))
(defn- mapize-settings [repositories]
(for [[id settings] repositories]
[id (if (string? settings) {:url settings} settings)]))
(defn normalize-repos [{:keys [omit-default-repositories repositories]
:as project}]
(assoc project :repositories
(first (reduce de-dupe-repo
(if-not omit-default-repositories
[(:repositories defaults)
(set (map first (:repositories defaults)))]
[[] #{}]) repositories))))
(-> project
(update-in [:repositories] mapize-settings)
(update-in [:deploy-repositories] mapize-settings)
(update-in [:plugin-repositories] mapize-settings)
(assoc :repositories
(first (reduce de-dupe-repo
(if-not omit-default-repositories
[(:repositories defaults)
(set (map first (:repositories defaults)))]
[[] #{}]) repositories)))))
(defn- without-version [[id version & other]]
(-> (apply hash-map other)

View file

@ -90,6 +90,7 @@
Also provides readme, faq, tutorial, news, sample, profiles,
deploying and copying info."
;; TODO: explain partial aliases in specific help
([project task] (println (or (static-help task) (help-for project task))))
([project]
(println "Leiningen is a tool for working with Clojure projects.\n")
@ -97,10 +98,11 @@ deploying and copying info."
(doseq [task-ns (main/tasks)]
(println (help-summary-for task-ns)))
(println "\nRun lein help $TASK for details.")
;; TODO: show user-level aliases too
(if-let [aliases (:aliases project)]
(do
(println "\nAliases:")
(doseq [[k v] aliases]
(println (str k " " v)))))
(println "\nSee also: readme, faq, tutorial, news, sample, profiles,
deploying and copying.")))
(println "\nSee also: readme, faq, tutorial, news, sample, profiles,"
"deploying and copying.")))

View file

@ -109,6 +109,7 @@ Also accepts a second parameter for fetching successive pages."
;; Maven's indexer requires over 1GB of free space for a <100M index
(let [orig-tmp (System/getProperty "java.io.tmpdir")
new-tmp (io/file (user/leiningen-home) "indices" "tmp")
;; TODO: check when project is nil
contexts (doall (map add-context (:repositories project)))]
(try
(.mkdirs new-tmp)

View file

@ -23,5 +23,5 @@
:default (complement :integration)
:random (fn [_] (> (rand) ~(float 1/2)))
:all (constantly true)}
:repositories {"snapshots" ~(format "file://%s/lein-repo"
(System/getProperty "java.io.tmpdir"))})
:deploy-repositories {"snapshots" ~(format "file://%s/lein-repo"
(System/getProperty "java.io.tmpdir"))})