Closed arrdem closed 5 years ago
$ ./kat compile example/clj+uberjar
{
"example/javac": {
"type": "katamari.roll.extensions.jvm/product",
"from": "example/javac",
"mvn/manifest": "roll",
"deps": null,
"paths": [
"/private/var/folders/z4/6b9f3h4x2dv6gvxbwyc55cwnwhsd5r/T/javac6828446538002526748"
]
},
"example/clj": {
"type": "katamari.roll.extensions.clj/product",
"from": "example/clj",
"mvn/manifest": "roll",
"paths": [
"/Users/arrdem/katamari/example/src/main/clj"
],
"deps": {
"example/javac": null,
"org.clojure/clojure": null
}
},
"example/clj+uberjar": {
"type": "katamari.roll.extensions.jar/product",
"from": "example/clj+uberjar",
"mvn/manifest": "roll",
"paths": [
"/Users/arrdem/katamari/target/clj-standalone.jar"
],
"deps": {
"example/javac": null,
"example/clj": null
}
},
"intent": "json"
}
It's all working!
This PR reworks the
roll
extension system, documents Katamari's build model and attempts to implement statically dependent, topologically ordered builds with the slight modification that during theprep
step, rules and manifests have the opportunity to inject dependencies and rules not explicitly declared in aRollfile
.TODO:
clojure-library
manifest to produce a build result with{:deps ..., :paths ..., :classpath ..., :libpath ...}
.java-library
manifest usingdeps
for java dependencies, and producing the same product structure asclojure-library
.classpath
task to consume either aclojure-library
or ajava-library
and print the resulting:classpath
.If that can be proved out then separately a
test
task andclojure-test
manifest can be added easily enough.