forked from clojure-emacs/cider-nrepl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathproject.clj
189 lines (166 loc) · 11.1 KB
/
project.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
(def fipp-version "0.6.26")
(def jdk8? (= (System/getProperty "java.specification.version") "1.8"))
(def jdk21? (= (System/getProperty "java.specification.version") "21"))
;; Needed to be added onto classpath to test Java parser functionality.
(def jdk-21-sources-archive
(delay
(let [src-zip (clojure.java.io/file "base-src.zip")]
(if (.exists src-zip)
(do (println "Found JDK sources:" src-zip)
[src-zip])
(do (println "base-src.zip not found. Run `make base-src.zip` to properly run all the tests.")
nil)))))
;; Needed to run tests on JDK8.
(def tools-jar
(delay
(let [java-home (System/getProperty "java.home")
tools-jar-paths [(clojure.java.io/file java-home "tools.jar")
(clojure.java.io/file java-home "lib" "tools.jar")
(clojure.java.io/file java-home ".." "tools.jar")
(clojure.java.io/file java-home ".." "lib" "tools.jar")]
tools-jar (some #(when (.exists %) %) tools-jar-paths)]
(assert tools-jar (str "tools.jar was not found in " java-home))
(println "Found tools.jar:" tools-jar)
(str tools-jar))))
(def dev-test-common-profile
{:dependencies '[[org.clojure/clojurescript "1.11.60" :scope "provided"]
;; 1.3.7 and 1.4.7 are working, but we need 1.3.7 for JDK8
[ch.qos.logback/logback-classic "1.3.7"]
[org.clojure/test.check "1.1.1"]
[cider/piggieback "0.5.3"]
[nubank/matcher-combinators "3.9.1"]]
:source-paths (cond-> ["test/src"]
;; We only include sources with JDK21 because we only
;; repackage sources for that JDK. Sources from one JDK are
;; not compatible with other JDK for our test purposes.
jdk21? (into @jdk-21-sources-archive)
jdk8? (conj @tools-jar))
:global-vars {'*assert* true}
:java-source-paths ["test/java"]
:jvm-opts ["-Djava.util.logging.config.file=test/resources/logging.properties"]
:resource-paths ["test/java" "test/resources"]})
(defproject cider/cider-nrepl (or (not-empty (System/getenv "PROJECT_VERSION"))
"0.0.0")
:description "A collection of nREPL middleware designed to enhance Clojure editors."
:url "https://github.com/clojure-emacs/cider-nrepl"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:scm {:name "git" :url "https://github.com/clojure-emacs/cider-nrepl"}
:dependencies [[nrepl "1.1.1" :exclusions [org.clojure/clojure]]
[cider/orchard "0.28.0" :exclusions [org.clojure/clojure]]
^:inline-dep [mx.cider/haystack "0.3.3" :exclusions [cider/orchard]]
^:inline-dep [thunknyc/profile "0.5.2"]
^:inline-dep [mvxcvi/puget "1.3.4" :exclusions [org.clojure/clojure]]
^:inline-dep [fipp ~fipp-version] ; can be removed in unresolved-tree mode
^:inline-dep [compliment "0.6.0"]
^:inline-dep [org.rksm/suitable "0.6.2" :exclusions [org.clojure/clojure
org.clojure/clojurescript]]
^:inline-dep [cljfmt "0.9.2" :exclusions [org.clojure/clojurescript
org.clojure/tools.cli]]
^:inline-dep [org.clojure/tools.namespace "1.3.0" :exclusions [org.clojure/clojurescript
org.clojure/tools.cli]]
^:inline-dep [io.github.tonsky/clj-reload "0.6.0" :exclusions [org.clojure/clojure]]
^:inline-dep [org.clojure/tools.reader "1.4.1"]
[mx.cider/logjam "0.3.0" :exclusions [org.clojure/clojure]]]
; see Clojure version matrix in profiles below
:pedantic? ~(if (and (System/getenv "CI")
(not (System/getenv "CIDER_NO_PEDANTIC")))
:abort
;; :pedantic? can be problematic for certain local dev workflows:
false)
;; mranderson cannot be put in a profile (as the other plugins),
;; so we conditionally disable it, because otherwise clj-kondo cannot run.
:plugins ~(if (System/getenv "CIDER_NO_MRANDERSON")
[]
'[[thomasa/mranderson "0.5.4-SNAPSHOT"]])
:mranderson {:project-prefix "cider.nrepl.inlined.deps"
:overrides {[mvxcvi/puget fipp] [fipp ~fipp-version]} ; only takes effect in unresolved-tree mode
:expositions [[mvxcvi/puget fipp]] ; only takes effect unresolved-tree mode
:unresolved-tree false}
:filespecs [{:type :bytes :path "cider/cider-nrepl/project.clj" :bytes ~(slurp "project.clj")}]
:source-paths ["src"]
:resource-paths ["resources"]
:test-paths ["test/clj" "test/cljs" "test/common"]
:test-selectors {:default (fn [test-meta]
(let [parse-version (fn [v] (mapv #(Integer/parseInt (re-find #"\d+" %)) (clojure.string/split v #"\.")))
clojure-version (parse-version (clojure-version))]
(and (if-let [min-version (:min-clj-version test-meta)]
(>= (compare clojure-version (parse-version min-version)) 0)
true)
(if-let [max-version (:max-clj-version test-meta)]
(>= (compare (parse-version max-version) clojure-version) 0)
true))))
:debugger :debugger}
:aliases {"bump-version" ["change" "version" "leiningen.release/bump-version"]
"mranderson" ["with-profile" "+plugin.mranderson/config"]
"docs" ["with-profile" "+maint" "run" "-m" "cider.nrepl.impl.docs" "--file"
~(clojure.java.io/as-relative-path
(clojure.java.io/file "doc" "modules" "ROOT" "pages" "nrepl-api" "ops.adoc"))]}
:release-tasks [["vcs" "assert-committed"]
["bump-version" "release"]
["vcs" "commit" "Release %s"]
["vcs" "tag" "v" "--no-sign"]
["bump-version"]
["vcs" "commit" "Begin %s"]]
:deploy-repositories [["clojars" {:url "https://clojars.org/repo"
:username :env/clojars_username
:password :env/clojars_password
:sign-releases false}]]
:profiles {:provided {:dependencies [[org.clojure/clojure "1.11.4"]]}
:1.10 {:dependencies [[org.clojure/clojure "1.10.3"]
[org.clojure/clojurescript "1.10.520" :scope "provided"]]}
:1.11 {:dependencies [[org.clojure/clojure "1.11.4"]
[org.clojure/clojurescript "1.11.60" :scope "provided"]]}
:1.12 {:dependencies [[org.clojure/clojure "1.12.0"]
[org.clojure/clojurescript "1.11.132" :scope "provided"]]}
:maint {:source-paths ["src" "maint"]
:dependencies [[org.clojure/tools.cli "1.1.230"]]}
:dev ~dev-test-common-profile
:test ~(-> dev-test-common-profile
(update :dependencies conj '[leiningen-core "2.11.2"
:exclusions [org.clojure/clojure
commons-codec
com.google.code.findbugs/jsr305]]))
;; Need ^:repl because of: https://github.com/technomancy/leiningen/issues/2132
:repl ^:repl [:test
{:repl-options {:nrepl-middleware [cider.nrepl/wrap-apropos
cider.nrepl/wrap-classpath
cider.nrepl/wrap-complete
cider.nrepl/wrap-content-type
cider.nrepl/wrap-debug
cider.nrepl/wrap-enlighten
cider.nrepl/wrap-format
cider.nrepl/wrap-info
cider.nrepl/wrap-inspect
cider.nrepl/wrap-macroexpand
cider.nrepl/wrap-ns
cider.nrepl/wrap-out
cider.nrepl/wrap-profile
cider.nrepl/wrap-refresh
cider.nrepl/wrap-reload
cider.nrepl/wrap-resource
cider.nrepl/wrap-slurp
cider.nrepl/wrap-spec
cider.nrepl/wrap-stacktrace
cider.nrepl/wrap-test
cider.nrepl/wrap-trace
cider.nrepl/wrap-tracker
cider.nrepl/wrap-undef
cider.nrepl/wrap-version
cider.nrepl/wrap-xref]}}]
:cljfmt [:test
{:plugins [[lein-cljfmt "0.9.2"]]
:cljfmt {:indents {as-> [[:inner 0]]
delay [[:inner 0]]
timing [[:inner 0]]
with-debug-bindings [[:inner 0]]
merge-meta [[:inner 0]]
try-if-let [[:block 1]]}}}]
:clj-kondo {:plugins [[com.github.clj-kondo/lein-clj-kondo "2023.09.07"]]}
:eastwood [:test
{:plugins [[jonase/eastwood "1.4.0"]]
:eastwood {:config-files ["eastwood.clj"]
:exclude-namespaces [cider.nrepl.middleware.test-filter-tests cider.tasks]
:ignored-faults {:unused-ret-vals-in-try {cider.nrepl.middleware.profile-test [{:line 25}]}
:suspicious-test {cider.nrepl.middleware.profile-test [{:line 25}]}}}}]
:deploy {:source-paths [".circleci/deploy"]}})