arrdem / katamari

Roll up all your software into artifacts!
67 stars 4 forks source link

Generalized rolling #12

Closed arrdem closed 5 years ago

arrdem commented 5 years ago

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 the prep step, rules and manifests have the opportunity to inject dependencies and rules not explicitly declared in a Rollfile.

TODO:

If that can be proved out then separately a test task and clojure-test manifest can be added easily enough.

arrdem commented 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!