diff --git a/src/leiningen/new.clj b/src/leiningen/new.clj index c8e24c16..808be87d 100644 --- a/src/leiningen/new.clj +++ b/src/leiningen/new.clj @@ -2,6 +2,8 @@ "Generate project scaffolding based on a template." (:refer-clojure :exclude [new list]) (:require [bultitude.core :as bultitude] + [leiningen.core.classpath :as cp] + [leiningen.core.project :as project] [leiningen.core.user :as user] [leiningen.core.main :refer [abort parse-options option-arg]] [leiningen.new.templates :refer [*dir* *force?*]]) @@ -10,22 +12,24 @@ (def ^:dynamic *use-snapshots?* false) (defn- fake-project [name] - {:templates [[(symbol name "lein-template") (if *use-snapshots?* - "(0.0.0,)" "RELEASE")]] - :repositories (merge {"clojars" {:url "http://clojars.org/repo/" - :update :always} - "central" {:url "http://repo1.maven.org/maven2" - :update :always}} - (-> (user/profiles) :user :plugin-repositories))}) + (let [template-symbol (symbol name "lein-template") + template-version (if *use-snapshots?* + "(0.0.0,)" + "RELEASE") + repositories (reduce + (:reduce (meta project/default-repositories)) + project/default-repositories + (-> (user/profiles) :user :plugin-repositories))] + {:templates [[template-symbol template-version]] + :repositories repositories})) (defn resolve-remote-template [name sym] - (if-let [get-dep (resolve 'leiningen.core.classpath/resolve-dependencies)] - (try (get-dep :templates (fake-project name) :add-classpath? true) - (require sym) - true - (catch clojure.lang.Compiler$CompilerException e - (abort (str "Could not load template, failed with: " (.getMessage e)))) - (catch Exception e nil)))) + (try (cp/resolve-dependencies :templates (fake-project name) :add-classpath? true) + (require sym) + true + (catch clojure.lang.Compiler$CompilerException e + (abort (str "Could not load template, failed with: " (.getMessage e)))) + (catch Exception e nil))) (defn resolve-template [name] (let [sym (symbol (str "leiningen.new." name))]