/
java.clj
35 lines (31 loc) · 1.03 KB
/
java.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
(ns antq.ver.java
(:require
[antq.util.maven :as u.mvn]
[antq.ver :as ver]
[version-clj.core :as version])
(:import
(org.eclipse.aether.resolution
VersionRangeRequest)))
(defn get-versions
[name opts]
(let [{:keys [system session artifact remote-repos]} (u.mvn/repository-system name "[0,)" opts)
req (doto (VersionRangeRequest.)
(.setArtifact artifact)
(.setRepositories remote-repos))]
(->> (.resolveVersionRange system session req)
(.getVersions))))
(defn get-sorted-versions-by-name*
[name opts]
(let [sorted-versions (->> (get-versions name opts)
(map str)
(sort version/version-compare)
(reverse))]
(cond->> sorted-versions
(not (:snapshots? opts)) (remove ver/snapshot?))))
(def get-sorted-versions-by-name
(memoize get-sorted-versions-by-name*))
(defmethod ver/get-sorted-versions :java
[dep]
(get-sorted-versions-by-name
(:name dep)
(u.mvn/dep->opts dep)))