Skip to content

Instantly share code, notes, and snippets.

@joinr
Last active January 29, 2020 13:45
Show Gist options
  • Save joinr/3d70c8103b90b0cedd52e521f92b5ca8 to your computer and use it in GitHub Desktop.
Save joinr/3d70c8103b90b0cedd52e521f92b5ca8 to your computer and use it in GitHub Desktop.
A fancy repl setup derived from https://asciinema.org/a/296507 by didibus
{:aliases {:repl {:extra-deps {com.bhauman/rebel-readline {:mvn/version "RELEASE"}
io.aviso/pretty {:mvn/version "RELEASE"}
mvxcvi/puget {:mvn/version "RELEASE"}
org.clojure/clojure {:mvn/version "RELEASE"}
com.gfredericks/user.clj {:mvn/version "RELEASE"}
clj-commons/pomegranate {:mvn/version "RELEASE"}}
:main-opts ["-m" "rebel-readline.main"]}
:fancy {:extra-deps {org.clojure/core.async {:mvn/version "RELEASE"}
org.clojure/core.logic {:mvn/version "RELEASE"}
org.clojure/test.check {:mvn/version "RELEASE"}
generateme/fastmath {:mvn/version "RELEASE"}}}
:profiling {:extra-deps {com.clojure-goes-fast/clj-java-decompiler {:mvn/version "RELEASE"}
com.clojure-goes-fast/clj-memory-meter {:mvn/version "RELEASE"}
com.clojure-goes-fast/clj-async-profiler {:mvn/version "RELEASE"}
com.clojure-goes-fast/jvm-alloc-rate-meter {:mvn/version "RELEASE"}
com.clojure-goes-fast/jvm-hiccup-meter {:mvn/version "RELEASE"}
}}}}
;;starting point for a lein setup?
{:repl {:dependencies [[com.bhauman/rebel-readline "RELEASE"]
[io.aviso/pretty "RELEASE"]
[mvxcvi/puget "RELEASE"]
[org.clojure/clojure "RELEASE"]
[com.gfredericks/user.clj "RELEASE"]
[clj-commons/pomegranate "RELEASE"]]
:aliases {"rebl" ["trampoline" "run" "-m" "rebel-readline.main"]}}
:fancy {:dependencies [[org.clojure/core.async "RELEASE"]
[org.clojure/core.logic "RELEASE"]
[org.clojure/test.check "RELEASE"]
[generateme/fastmath "RELEASE"]]}
:profiling {:dependencies
[[com.clojure-goes-fast/clj-java-decompiler "RELEASE"]
[com.clojure-goes-fast/clj-memory-meter "RELEASE"]
[com.clojure-goes-fast/clj-async-profiler "RELEASE"]
[com.clojure-goes-fast/jvm-alloc-rate-meter "RELEASE"]
[com.clojure-goes-fast/jvm-hiccup-meter "RELEASE"]]}}
(require '[cemerick.pomegranate :as deps-pomegranate])
(defn add-lein-deps
"Given one or more lein style dependency vector, will dynamically
download them and add them to the classpath so they can be used
in the current program. Given lein style dependency vectors must be quoted."
[& lein-style-dependency]
(let [cl (.getContextClassLoader (Thread/currentThread))]
(.setContextClassLoader (Thread/currentThread) (clojure.lang.DynamicClassLoader. cl))
((resolve 'deps-pomegranate/add-dependencies)
:coordinates `[~@lein-style-dependency]
:repositories (merge @(resolve 'cemerick.pomegranate.aether/maven-central)
{"clojars" "https://clojars.org/repo"}))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment