Skip to content

Instantly share code, notes, and snippets.

@davidsantiago
Created November 23, 2010 00:11
Show Gist options
  • Save davidsantiago/710988 to your computer and use it in GitHub Desktop.
Save davidsantiago/710988 to your computer and use it in GitHub Desktop.
(defn maven-artifact
"Copy a jar to a filesystem location from a maven repo. Artifacts are a sequence
consisting of group, artifact, and version. Doesn't support SNAPSHOTS right now."
[request dir-path maven-repo-url artifacts]
(let [[group artifact version] (first artifacts)]
(if (not (and group artifact version))
;; Ran out of artifacts, return the request.
request
(let [file-name (str artifact "-" version ".jar")
group-path (join "/" (split group #"\."))
artifact-url (str maven-repo-url "/" group-path "/" artifact "/" version
"/" file-name)]
(recur (remote-file/remote-file request (str dir-path "/" file-name)
:url artifact-url)
dir-path maven-repo-url (rest artifacts))))))
(-> request
(directory/directory "/opt/clutch_jars" :owner "david")
(maven-artifact "/opt/clutch_jars"
"http://repo1.maven.org/maven2"
[["org.clojure" "clojure" "1.2.0"]
["org.clojure" "clojure-contrib" "1.2.0"]])
(maven-artifact "/opt/clutch_jars"
"http://clojars.org/repo"
[["com.ashafa" "clutch" "0.2.3-SNAPSHOT"]]))
;; Results in this output...
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Directory /opt/clutch_jars...
...done
remote-file /opt/clutch_jars/clojure-1.2.0.jar...
MD5 sum is abdf685c42f362dfe0f36e325b8dc724 /opt/clutch_jars/clojure-1.2.0.jar
ls: cannot access /opt/clutch_jars/clojure-1.2.0.jar.~[0-9]*~: No such file or directory
...done
remote-file /opt/clutch_jars/clojure-contrib-1.2.0.jar...
curl: (22) The requested URL returned error: 404
mv: cannot stat `/opt/clutch_jars/clojure-contrib-1.2.0.jar.new': No such file or directory
mv: cannot stat `/opt/clutch_jars/clojure-contrib-1.2.0.jar.new': No such file or directory
remote-file /opt/clutch_jars/clojure-contrib-1.2.0.jar failed
logout
:err
at clojure.contrib.condition.Condition.fillInStackTrace (:-1)
java.lang.Throwable.<init> (Throwable.java:218)
clojure.contrib.condition.Condition.<init> (:-1)
pallet.execute$remote_sudo_cmd.invoke (execute.clj:126)
pallet.execute$execute_ssh_cmds$execute__4519.invoke (execute.clj:157)
pallet.resource$eval4415$fn__4416.invoke (resource.clj:344)
clojure.lang.MultiFn.invoke (MultiFn.java:175)
pallet.resource$execute_commands.invoke (resource.clj:375)
pallet.execute$execute_ssh_cmds.invoke (execute.clj:191)
pallet.execute$ssh_cmds.invoke (execute.clj:203)
pallet.core$execute_with_ssh.invoke (core.clj:261)
pallet.core$wrap_with_user_credentials$fn__5182.invoke (core.clj:347)
pallet.core$build_commands$fn__5150.invoke (core.clj:293)
pallet.core$add_target_keys$fn__5065.invoke (core.clj:139)
pallet.core$apply_phase_to_node.invoke (core.clj:303)
pallet.core$sequential_apply_phase$iter__5222__5226$fn__5227.invoke (core.clj:405)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:56)
clojure.lang.RT.seq (RT.java:450)
clojure.core$seq.invoke (core.clj:122)
clojure.core$r.invoke (core.clj:793)
pallet.core$reduce_phase_results.invoke (core.clj:363)
pallet.core$reduce_results$lift_nodes_reduce_result__5206.invoke (core.clj:382)
clojure.core$r.invoke (core.clj:799)
pallet.core$reduce_results.invoke (core.clj:380)
pallet.core$lift_nodes.invoke (core.clj:523)
pallet.core$lift_STAR_.invoke (core.clj:540)
pallet.core$lift.doInvoke (core.clj:658)
clojure.lang.RestFn.applyTo (RestFn.java:140)
clojure.core$apply.invoke (core.clj:540)
pallet.task.lift$lift.doInvoke (lift.clj:33)
clojure.lang.RestFn.invoke (RestFn.java:424)
clojure.lang.Var.invoke (Var.java:369)
clojure.lang.AFn.applyToHelper (AFn.java:165)
clojure.lang.Var.applyTo (Var.java:482)
clojure.core$apply.invoke (core.clj:542)
pallet.main_invoker$invoke.invoke (main_invoker.clj:77)
clojure.lang.Var.invoke (Var.java:390)
pallet.main$_main.doInvoke (main.clj:89)
clojure.lang.RestFn.applyTo (RestFn.java:138)
clojure.core$apply.invoke (core.clj:540)
bake.task.pallet$eval7744.invoke (NO_SOURCE_FILE:1)
clojure.lang.Compiler.eval (Compiler.java:5424)
clojure.lang.Compiler.eval (Compiler.java:5391)
clojure.core$eval.invoke (core.clj:2382)
cake.server$eval_verbose.invoke (server.clj:72)
cake.server$eval_multi$iter__708__712$fn__713$fn__714.invoke (server.clj:83)
cake.server$eval_multi$iter__708__712$fn__713.invoke (server.clj:82)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:56)
clojure.lang.LazySeq.next (LazySeq.java:85)
clojure.lang.RT.next (RT.java:560)
clojure.core$next.invoke (core.clj:61)
clojure.core$last.invoke (core.clj:228)
cake.server$eval_multi.invoke (server.clj:82)
bake.core$project_eval.invoke (core.clj:34)
cake.server$create$fn__745$fn__752.invoke (server.clj:139)
cake.server$create$fn__745.invoke (server.clj:120)
cake.utils.server_socket$accept_fn$fn__317$fn__320.invoke (server_socket.clj:39)
cake.utils.server_socket$accept_fn$fn__317.invoke (server_socket.clj:38)
clojure.lang.AFn.run (AFn.java:24)
java.lang.Thread.run (Thread.java:680)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment