/
leiningen.clj
33 lines (29 loc) · 1022 Bytes
/
leiningen.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
(ns antq.dep.leiningen
(:require
[antq.record :as r]
[clojure.java.io :as io]
[clojure.walk :as walk]))
(def ^:private project-file "project.clj")
(defn extract-deps
[project-clj-content-str]
(let [dep-form? (atom false)
deps (atom [])]
(walk/prewalk (fn [form]
(cond
(keyword? form)
(reset! dep-form? (= :dependencies form))
(and @dep-form?
(vector? form)
(vector? (first form)))
(swap! deps concat form))
form)
(read-string (str "(list " project-clj-content-str " )")))
(for [[dep-name version] @deps]
(r/map->Dependency {:type :java
:file project-file
:name (str dep-name)
:version version}))))
(defn load-deps
[]
(when (.exists (io/file project-file))
(extract-deps (slurp project-file))))