diff --git a/README.md b/README.md index 420aba5..6c7baee 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Leiningen: # Usage: -Use `lein javac` to AOT compile `clojure.tools.decompiler.RetrieveClasses` then you can use `lein repl` or `clj` to launch a repl +Use `lein javac` or `clojure -T:build compile` to AOT compile `clojure.tools.decompiler.RetrieveClasses` then you can use `lein repl` or `clj` to launch a repl. Use `decompile-classfiles `to decompile AOT compiled classes: @@ -21,7 +21,7 @@ user=> (d/decompile-classfiles {:input-path "path/to/root/classes/directory" :ou [...] ``` -You can use `decompile-classes` to decompile in memory classes, but to do so you must start the JVM using the java agent provided with `tools.decompiler` (use e.g. `lein jar` to build the jar): +You can use `decompile-classes` to decompile in memory classes, but to do so you must start the JVM using the java agent provided with `tools.decompiler` (use e.g. `lein jar` or `clojure -T:build jar` to build the jar): ```clojure [~/src/tools.decompiler] clj -J-javaagent:tools.decompiler.jar @@ -29,7 +29,7 @@ user=> (require '[clojure.tools.decompiler :as d]) nil user=> (defn foo [a] a) #'user/foo -user=> (decompile-classes {:classes #{"user$foo"}}) ;; optionally :output-path to decompile to disk +user=> (d/decompile-classes {:classes #{"user$foo"}}) ;; optionally :output-path to decompile to disk Decompiling user$foo (fn foo ([a] a) diff --git a/build.clj b/build.clj new file mode 100644 index 0000000..1a784d0 --- /dev/null +++ b/build.clj @@ -0,0 +1,17 @@ +(ns build + (:refer-clojure :exclude [compile]) + (:require [clojure.tools.build.api :as b])) + +(defn compile + [_] + (b/javac {:src-dirs ["java"] + :class-dir "target/classes"})) + +(defn jar + [_] + (b/copy-dir {:target-dir "target/classes" + :src-dirs ["src"]}) + (compile {}) + (b/jar {:class-dir "target/classes" + :jar-file "tools.decompiler.jar" + :manifest {"Premain-Class" "clojure.tools.decompiler.RetrieveClasses"}})) diff --git a/deps.edn b/deps.edn index 9fc29aa..c42ca8d 100644 --- a/deps.edn +++ b/deps.edn @@ -1,5 +1,10 @@ -{:deps {org.clojure/clojure {:mvn/version "1.10.0"} - org.clojure/core.match {:mvn/version "0.3.0-alpha5"} +{:deps {org.clojure/clojure {:mvn/version "1.10.3"} + org.clojure/core.match {:mvn/version "1.0.0"} org.apache.bcel/bcel {:mvn/version "6.1"} - fipp {:mvn/version "0.6.12"}} - :paths ["src" "target/classes"]} + fipp/fipp {:mvn/version "0.6.24"}} + :paths ["src" "target/classes"] + :aliases {:build {:deps {io.github.clojure/tools.build {:git/tag "v0.1.9" :git/sha "6736c83"}} + :ns-default build}} + :deps/prep-lib {:alias :build + :fn compile + :ensure "target/classes"}}