Created
November 3, 2010 16:36
-
-
Save lrenn/661323 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defn baked* [loader ns-forms bindings body] | |
(with-classloader loader | |
(let [body `(~'let ~(quote-if odd? bindings) ~@body) | |
clj (.loadClass loader "clojure.main") | |
signature (into-array Class [(class (into-array String []))]) | |
method (.getDeclaredMethod clj "main" signature) | |
args (into-array Object [(into-array String ["-e" (pr-str [ns-forms body])])])] | |
(.invoke method clj args)))) | |
(defmacro baked | |
[loader & forms] | |
(let [[ns-forms [bindings & body]] (split-with (complement vector?) forms)] | |
`(baked* ~loader '~ns-forms ~(quote-if even? bindings) '~body))) | |
; (baked loader | |
; [path (.getAbsolutePath file)] | |
; (load-file path))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment