Skip to content

Commit 90cf16c

Browse files
committed
feat: Add util.maven/get-last-updated
cf. #214
1 parent ac97cbd commit 90cf16c

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

src/antq/util/maven.clj

+40
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
[antq.constant :as const]
44
[antq.log :as log]
55
[antq.util.async :as u.async]
6+
[antq.util.date :as u.date]
67
[antq.util.env :as u.env]
78
[antq.util.leiningen :as u.lein]
89
[antq.util.xml :as u.xml]
@@ -25,6 +26,13 @@
2526
(org.eclipse.aether
2627
DefaultRepositorySystemSession
2728
RepositorySystem)
29+
(org.eclipse.aether.artifact
30+
Artifact)
31+
(org.eclipse.aether.metadata
32+
DefaultMetadata
33+
Metadata$Nature)
34+
(org.eclipse.aether.resolution
35+
MetadataRequest)
2836
(org.eclipse.aether.transfer
2937
TransferEvent
3038
TransferListener)))
@@ -215,3 +223,35 @@
215223
(System/setProperty "jdk.http.auth.tunneling.disabledSchemes" "")
216224
(System/setProperty "jdk.http.auth.proxying.disabledSchemes" "")
217225
(Authenticator/setDefault (authenticator username password))))))
226+
227+
(defn- get-last-updated*
228+
[name opts]
229+
(let [{:keys [^RepositorySystem system
230+
^DefaultRepositorySystemSession session
231+
^Artifact artifact
232+
remote-repos]} (repository-system name "[0,)" opts)
233+
metadata (DefaultMetadata. (.getGroupId artifact) (.getArtifactId artifact)
234+
"maven-metadata.xml" Metadata$Nature/RELEASE)
235+
result (some (fn [remote-repo]
236+
(let [req (doto (MetadataRequest.)
237+
(.setMetadata metadata)
238+
(.setRepository remote-repo))
239+
res (first (.resolveMetadata system session [req]))]
240+
(when (.isResolved res)
241+
res)))
242+
remote-repos)]
243+
(some->> result
244+
(.getMetadata)
245+
(.getFile)
246+
(slurp)
247+
(u.xml/str->xml-seq)
248+
(u.xml/get-value :lastUpdated)
249+
(u.date/yyyyMMddHHmmss))))
250+
251+
(def get-last-updated
252+
(memoize get-last-updated*))
253+
254+
(comment
255+
(def opts {:repositories default-repos})
256+
(get-last-updated "org.apache.commons/commons-lang3" opts)
257+
(get-last-updated "com.github.liquidz/antq" opts))

0 commit comments

Comments
 (0)