)]}'
{
  "commit": "8d4f7612b264849b4b0d7961ab5532f6879d9239",
  "tree": "e49160c5a44e656daac23055033175456e8304f7",
  "parents": [
    "6dd0b9cbd67478e20361933a994ca01fc1758f43"
  ],
  "author": {
    "name": "László Csomor",
    "email": "laszlocsomor@users.noreply.github.com",
    "time": "Tue Jan 08 09:04:53 2019 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jan 08 09:04:53 2019 +0100"
  },
  "message": "maprule: an improved version of genrule() (#86)\n\nmaprule() is an improved version of\r\nnative.genrule(), with the following advantages:\r\n\r\n- Maprule can process source files in parallel,\r\n  creating separate actions for each of them.\r\n\r\n- Maprule does not require declaring all output\r\n  files. Instead you declare templates for the\r\n  output files yielded for each source. Therefore\r\n  N source files and M templates yield N*M\r\n  outputs.\r\n\r\n- Maprule supports both Bash and cmd.exe syntax\r\n  for its commands via the specialized rules\r\n  bash_maprule and cmd_maprule.\r\n\r\n- Maprule\u0027s cmd attribute does deliberately not\r\n  support $(location) expression nor Make\r\n  Variables, in order to avoid issues and\r\n  challenges with quoting. (In case of cmd.exe\r\n  passing empty arguments is impossible). These\r\n  paths can be passed as envvars instead.\r\n\r\n- Maprule\u0027s add_env attribute does support\r\n  $(location) expressions (and some extra\r\n  placeholders) and is the idiomatic way to pass\r\n  execpaths of labels in \"tools\" or \"srcs\" (the\r\n  shared sources available for all actions) to the\r\n  command.\r\n\r\nSee https://github.com/bazelbuild/bazel/issues/4319",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "97a9e5f40fda58e7a4c9d57d7be31de1452e750d",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "fe7c8690a9837004280cfe8b41fbf90228ad8388",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4f98c5d3793dd10c943f89083b987004d64ddc9d",
      "new_mode": 33188,
      "new_path": "rules/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3f7b5246c0b07d1989f96768be2fe0c359f254c4",
      "new_mode": 33188,
      "new_path": "rules/maprule.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "007bfa5f8ebd4b264d3586cadd23bd9bf594556a",
      "new_mode": 33188,
      "new_path": "rules/maprule_private.bzl"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "19f690eeed65e6f0d03907e782b13d601856f832",
      "new_mode": 33188,
      "new_path": "rules/maprule_testing.bzl"
    },
    {
      "type": "modify",
      "old_id": "e845dc2a72aa2dec7a6ff9cb6c498da06f52843a",
      "old_mode": 33188,
      "old_path": "tests/BUILD",
      "new_id": "8657cae1df23930f66990539e43a59e76004fcfc",
      "new_mode": 33188,
      "new_path": "tests/BUILD"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49a346df2d55393ffbd78572b7253a8b94bdf89e",
      "new_mode": 33188,
      "new_path": "tests/maprule_tests.bzl"
    }
  ]
}
