|
25 | 25 | :proxy-port (some->> ["https.proxyPort" "http.proxyPort"]
|
26 | 26 | (some #(System/getProperty %)) Integer/parseInt)}))
|
27 | 27 |
|
28 |
| -(defn get-artifacts-from-clojars! |
| 28 | +(defn- stale-cache? |
| 29 | + [] |
| 30 | + (or (empty? @artifacts) |
| 31 | + (if-let [last-modified (some-> artifacts meta :last-modified .getTime)] |
| 32 | + (neg? (- millis-per-day (- (.getTime (java.util.Date.)) last-modified))) |
| 33 | + true))) |
| 34 | + |
| 35 | +(defn get-clojars-artifacts! |
29 | 36 | "Returns a vector of [[some/lib \"0.1\"]...]."
|
30 | 37 | []
|
31 | 38 | (try
|
|
38 | 45 | ;; In the event clojars is down just return an empty vector. See #136.
|
39 | 46 | [])))
|
40 | 47 |
|
41 |
| -(defn add-artifacts-from-clojars! [] |
42 |
| - (->> (get-artifacts-from-clojars!) |
43 |
| - (map #(swap! artifacts update-in [(str (first %))] conj (second %))) |
44 |
| - dorun)) |
45 |
| - |
46 |
| -(defn- stale-cache? [] |
47 |
| - (or (empty? @artifacts) |
48 |
| - (if-let [last-modified (some-> artifacts meta :last-modified .getTime)] |
49 |
| - (neg? (- millis-per-day (- (.getTime (java.util.Date.)) last-modified))) |
50 |
| - true))) |
51 |
| - |
52 | 48 | (defn- get-mvn-artifacts!
|
53 | 49 | "All the artifacts under org.clojure in mvn central"
|
54 | 50 | [group-id]
|
|
59 | 55 | search-result (json/parse-string body true)]
|
60 | 56 | (map :a (-> search-result :response :docs))))
|
61 | 57 |
|
62 |
| -(defn- get-versions! |
63 |
| - "Gets all the versions from an artifact belonging to the org.clojure." |
64 |
| - [group-id artifact] |
65 |
| - (let [search-prefix "http://search.maven.org/solrsearch/select?q=g:%22" |
| 58 | +(defn- get-mvn-versions! |
| 59 | + "Fetches all the versions of particular artifact from maven repository." |
| 60 | + [for-artifact] |
| 61 | + (let [[group-id artifact] (str/split for-artifact #"/") |
| 62 | + search-prefix "http://search.maven.org/solrsearch/select?q=g:%22" |
66 | 63 | {:keys [_ _ body _]} @(http/get (str search-prefix
|
67 | 64 | group-id
|
68 | 65 | "%22+AND+a:%22"
|
69 | 66 | artifact
|
70 |
| - "%22&core=gav&rows=200&wt=json") |
| 67 | + "%22&core=gav&rows=100&wt=json") |
71 | 68 | (assoc (get-proxy-opts) :as :text))]
|
72 | 69 | (->> (json/parse-string body true)
|
73 | 70 | :response
|
74 | 71 | :docs
|
75 |
| - (map :v) |
76 |
| - doall))) |
77 |
| - |
78 |
| -(defn- collate-artifact-and-versions [group-id artifact] |
79 |
| - (->> artifact |
80 |
| - (get-versions! group-id) |
81 |
| - (vector (str group-id "/" artifact)))) |
82 |
| - |
83 |
| -(defn- add-artifact [[artifact versions]] |
84 |
| - (swap! artifacts update-in [artifact] (constantly versions))) |
| 72 | + (map :v)))) |
85 | 73 |
|
86 |
| -(defn- add-artifacts [group-id artifacts] |
87 |
| - (->> artifacts |
88 |
| - (partition-all 2) |
89 |
| - (map #(future (->> % |
90 |
| - (map (partial collate-artifact-and-versions group-id)) |
91 |
| - (map add-artifact) |
92 |
| - dorun))))) |
93 |
| - |
94 |
| -(defn- get-artifacts-from-mvn-central! [] |
| 74 | +(defn- get-artifacts-from-mvn-central! |
| 75 | + [] |
95 | 76 | (let [group-ids #{"com.cognitect" "org.clojure"}]
|
96 |
| - (mapcat (fn [group-id] (add-artifacts group-id (get-mvn-artifacts! group-id))) |
| 77 | + (mapcat (fn [group-id] |
| 78 | + (->> (get-mvn-artifacts! group-id) |
| 79 | + (map #(vector (str group-id "/" %) nil)))) |
97 | 80 | group-ids)))
|
98 | 81 |
|
99 |
| -(defn- update-artifact-cache! [] |
100 |
| - (let [mvn-central-futures (get-artifacts-from-mvn-central!) |
101 |
| - clojars-future (future (add-artifacts-from-clojars!))] |
102 |
| - (dorun (map deref mvn-central-futures)) |
103 |
| - @clojars-future) |
104 |
| - (alter-meta! artifacts update-in [:last-modified] |
105 |
| - (constantly (java.util.Date.)))) |
| 82 | +(defn- get-artifacts-from-clojars! |
| 83 | + [] |
| 84 | + (reduce #(update %1 (str (first %2)) conj (second %2)) |
| 85 | + (sorted-map) |
| 86 | + (get-clojars-artifacts!))) |
| 87 | + |
| 88 | +(defn- update-artifact-cache! |
| 89 | + [] |
| 90 | + (let [clojars-artifacts (future (get-artifacts-from-clojars!)) |
| 91 | + maven-artifacts (future (get-artifacts-from-mvn-central!))] |
| 92 | + (reset! artifacts (into @clojars-artifacts @maven-artifacts)) |
| 93 | + (alter-meta! artifacts update-in [:last-modified] (constantly (java.util.Date.))))) |
106 | 94 |
|
107 |
| -(defn artifact-list [{:keys [force]}] |
| 95 | +(defn artifact-list |
| 96 | + [{:keys [force]}] |
108 | 97 | (when (or (= force "true") (stale-cache?))
|
109 | 98 | (update-artifact-cache!))
|
110 | 99 | (->> @artifacts keys list*))
|
111 | 100 |
|
112 |
| -(defn artifact-versions [{:keys [artifact]}] |
113 |
| - (->> artifact (get @artifacts) distinct versions/version-sort reverse list*)) |
| 101 | +(defn artifact-versions |
| 102 | + [{:keys [artifact]}] |
| 103 | + (->> (or (get @artifacts artifact) |
| 104 | + (get-mvn-versions! artifact)) |
| 105 | + distinct |
| 106 | + versions/version-sort |
| 107 | + reverse |
| 108 | + list*)) |
114 | 109 |
|
115 | 110 | (defn- make-resolve-missing-aware-of-new-deps
|
116 | 111 | "Once the deps are available on cp we still have to load them and
|
|
0 commit comments