Skip to content

Commit 06eab91

Browse files
committed
move into separate repo from thheller/shadow-cljs
prep for adding full launcher functionality
0 parents  commit 06eab91

File tree

4 files changed

+112
-0
lines changed

4 files changed

+112
-0
lines changed

.gitignore

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
target/
2+
node_modules/
3+
checkouts/
4+
pom.xml
5+
pom.xml.asc
6+
*.iml
7+
*.jar
8+
*.js.map
9+
*.class
10+
.cpcache
11+
.cljs-cache
12+
.shadow-cljs
13+
.cljs-repl
14+
.cljs_node_repl
15+
.idea
16+
.lein-*
17+
.nrepl-*
18+
/tmp
19+
.DS_Store
20+
yarn.lock
21+
package-lock.json
22+
/package.json
23+
*.log

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
This is a utility used by `shadow-cljs` to resolve/download dependencies.
2+
3+
https://github.com/thheller/shadow-cljs

project.clj

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
(defproject shadow-cljs/launcher "1.2.0"
2+
:description "CLJS development tools"
3+
:url "https://github.com/thheller/shadow-cljs"
4+
:dependencies
5+
[[org.clojure/clojure "1.9.0"]
6+
[com.cemerick/pomegranate "1.0.0"]
7+
[org.slf4j/slf4j-nop "1.7.25"]]
8+
9+
:source-paths
10+
["src/main"]
11+
12+
:profiles
13+
{:uberjar
14+
{:aot [shadow.cljs.launcher.deps]
15+
:main shadow.cljs.launcher.deps}})
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
(ns shadow.cljs.launcher.deps
2+
"lightweight launcher that just downloads jars and builds a classpath"
3+
(:gen-class)
4+
(:require
5+
[clojure.java.io :as io]
6+
[cemerick.pomegranate.aether :as aether]))
7+
8+
(defn transfer-listener
9+
[{:keys [type error resource] :as info}]
10+
(let [{:keys [name repository]} resource]
11+
(binding [*out* *err*]
12+
(case type
13+
:started (println "Retrieving" name "from" repository)
14+
;; :progressed
15+
;; :succeeded
16+
:corrupted (when error (println (.getMessage error)))
17+
nil))))
18+
19+
(defn -main []
20+
(try
21+
(let [{:keys [cache-root repositories proxy local-repo dependencies mirrors version]
22+
:or {dependencies []
23+
repositories {}
24+
cache-root ".shadow-cljs"}
25+
:as config}
26+
(read *in*)]
27+
28+
(println "shadow-cljs - updating dependencies")
29+
30+
;; FIXME: resolve conflicts?
31+
(let [resolve-args
32+
(-> {:coordinates
33+
dependencies
34+
:repositories
35+
(merge aether/maven-central {"clojars" "https://clojars.org/repo"} repositories)
36+
:transfer-listener
37+
transfer-listener}
38+
(cond->
39+
mirrors
40+
(assoc :mirrors mirrors)
41+
proxy
42+
(assoc :proxy proxy)
43+
local-repo
44+
(assoc :local-repo local-repo)
45+
))
46+
47+
deps
48+
(apply aether/resolve-dependencies (into [] (mapcat identity) resolve-args))
49+
50+
files
51+
(into [] (map #(.getAbsolutePath %)) (aether/dependency-files deps))
52+
53+
result
54+
{:dependencies dependencies
55+
:version version
56+
:files files
57+
:deps deps}
58+
59+
classpath-file
60+
(io/file cache-root "classpath.edn")]
61+
62+
(io/make-parents classpath-file)
63+
64+
(spit classpath-file (pr-str result)))
65+
66+
(println "shadow-cljs - dependencies updated"))
67+
68+
(catch Exception e
69+
(println "shadow-cljs - dependency update failed -" (.getMessage e))
70+
(System/exit 1)
71+
)))

0 commit comments

Comments
 (0)