Merge pull request #1568 from eraserhd/new_remote_template_fixes

Fix installing templates from internal repositories
This commit is contained in:
Phil Hagelberg 2014-06-17 13:35:59 -07:00
commit 4aefda6d47

View file

@ -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))]