-
Notifications
You must be signed in to change notification settings - Fork 14
/
main.clj
61 lines (52 loc) · 2.28 KB
/
main.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
(ns depot.outdated.main
(:require [clojure.pprint :as pprint]
[clojure.set :as set]
[clojure.string :as str]
[clojure.tools.cli :as cli]
[depot.outdated :as depot]
[depot.outdated.update]
[depot.outdated.resolve-virtual]))
(defn comma-str->keywords-set [comma-str]
(into #{} (map keyword) (str/split comma-str #",")))
(defn keywords-set->comma-str [kws]
(str/join "," (map name kws)))
(def version-types-str (keywords-set->comma-str depot/version-types))
(def cli-options
[["-a" "--aliases ALIASES" "Comma list of aliases to use when reading deps.edn"
:default #{}
:default-desc ""
:parse-fn comma-str->keywords-set]
["-t" "--consider-types TYPES" (str "Comma list of version types to consider out of " version-types-str)
:default #{:release}
:default-desc "release"
:parse-fn comma-str->keywords-set
:validate [#(set/subset? % depot/version-types) (str "Must be subset of " depot/version-types)]]
["-o" "--overrides" "Consider overrides for updates instead of pinning to them."]
["-u" "--update" "Update deps.edn, or filenames given as additional command line arguments."]
["-r" "--resolve-virtual" "Convert -SNAPSHOT/RELEASE/LATEST versions into immutable references."]
["-h" "--help"]])
(defn -main [& args]
(let [{{:keys [aliases consider-types overrides help update resolve-virtual]} :options
files :arguments
summary :summary} (cli/parse-opts args cli-options)]
(cond
help
(do
(println "USAGE: clojure -m depot.outdated.main [OPTIONS] [FILES]\n")
(println summary))
update
(if (seq files)
(run! #(depot.outdated.update/update-deps-edn! % consider-types)
files)
(depot.outdated.update/update-deps-edn! "deps.edn" consider-types))
resolve-virtual
(if (seq files)
(run! depot.outdated.resolve-virtual/update-deps-edn! files)
(depot.outdated.resolve-virtual/update-deps-edn! "deps.edn"))
:else
(let [outdated (depot/gather-outdated consider-types aliases overrides)]
(if (empty? outdated)
(println "All up to date!")
(do (pprint/print-table ["Dependency" "Current" "Latest"] outdated)
(println)))))
(shutdown-agents)))