Skip to content

Commit 06ea86a

Browse files
committed
Workaround
1 parent b00c704 commit 06ea86a

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

src/refactor_nrepl/plugin.clj

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
(ns refactor-nrepl.plugin
2+
(:require
3+
[refactor-nrepl.core :as core]
4+
[leiningen.core.main :as lein]))
5+
6+
(def ^:private min-clojure-version
7+
"1.7.0")
8+
9+
(defn- find-clojure-version [dependencies]
10+
(->> dependencies
11+
(some (fn [[id version & _]]
12+
(when (= id 'org.clojure/clojure)
13+
version)))))
14+
15+
(defn- enable-middleware-if-clj-version-ok
16+
[{:keys [dependencies managed-dependencies exclusions] :as project}]
17+
(let [clojure-excluded? (some #(= % 'org.clojure/clojure) exclusions)
18+
clojure-version (when-not clojure-excluded?
19+
(or (find-clojure-version dependencies)
20+
(find-clojure-version managed-dependencies)))
21+
clojure-version-ok?
22+
(cond clojure-excluded? true ; up to the user
23+
24+
(nil? clojure-version)
25+
;; Lein 2.5.2+ uses Clojure 1.7 by default
26+
(lein/version-satisfies? (lein/leiningen-version) "2.5.2")
27+
28+
:else
29+
(lein/version-satisfies? clojure-version min-clojure-version))]
30+
(if clojure-version-ok?
31+
(-> project
32+
(update-in [:dependencies]
33+
(fnil into [])
34+
[['refactor-nrepl (core/version)]])
35+
(update-in [:repl-options :nrepl-middleware]
36+
(fnil into [])
37+
'[refactor-nrepl.middleware/wrap-refactor]))
38+
(do
39+
(lein/warn "Warning: refactor-nrepl requires Clojure version"
40+
min-clojure-version "or later.")
41+
(lein/warn "Warning: refactor-nrepl middleware won't be activated.")
42+
project))))
43+
44+
(defn- warn-no-project []
45+
(lein/warn "Warning: refactor-nrepl needs to run in the context of a project.")
46+
(lein/warn "Warning: refactor-nrepl middleware won't be activated."))
47+
48+
(defn middleware
49+
[project]
50+
(if (core/project-root)
51+
(enable-middleware-if-clj-version-ok project)
52+
(do
53+
(warn-no-project)
54+
project)))

0 commit comments

Comments
 (0)