)]}'
{
  "commit": "8bd2ab16d14200774009f96ed94f83edf6ea1094",
  "tree": "1ad5f5de274c14b340c0bbc2ec2af7b4ef770532",
  "parents": [
    "144b786814f203ed2f2f9a4edfc30cefc5d8dd7c"
  ],
  "author": {
    "name": "Serge Bazanski",
    "email": "serge@monogon.tech",
    "time": "Fri Dec 17 17:32:16 2021 +0100"
  },
  "committer": {
    "name": "Sergiusz Bazanski",
    "email": "serge@monogon.tech",
    "time": "Mon Dec 20 16:31:30 2021 +0000"
  },
  "message": "build/analysis/importsort: init\n\nThis adds an analyzer which enforces import sorting as per\nCODING_STANDARDS.md. It is not yet enabled in nogo.\n\nThis effectively duplicates some logic that is present in goimports.\nHowever, that logic is mostly within an \u0027internal\u0027 package in x/tools,\nand would be somewhat tricky to make work within the framework of an\nanalysis.Analyser (as it expects to also mutate a file). Thus, we\nend up writing the analysis logic ourselves. Tests are provided to make\nsure this logic doesn\u0027t rot away.\n\nWe also move some common logic from \u0027noioutil\u0027 to a new \u0027lib\u0027 package,\nand implement the last piece of the puzzle there: a code generator to\nprovide information about the toolchain\u0027s stdlib as a map/set.\n\nChange-Id: Ia0f32d6f9122e13117d18ae781d8255c6e3a887d\nReviewed-on: https://review.monogon.dev/c/monogon/+/494\nReviewed-by: Leopold Schabel \u003cleo@nexantic.com\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "309edfb26140e1f98d729c0769b868cb2c6dabea",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dc5c45de7f469751a595a026bf2c761e621c00e0",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/classify.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1b33b3beea0ee469e804fbaa25ffa2e29ae96ca9",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/importsort.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "723e7d22c3a3efff9a175d17fb5a9156ffe2448e",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/importsort_test.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "97c32a8f75763fc0b02efab163157f545d98c28d",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/testdata/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8f018abf02a6b977308117739eb034ccabc4af44",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/testdata/example.com/extlib/extlib.notgo"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f52652b1ba78cfe439c9719d0d3dfb51ed9d44d8",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/testdata/example.com/extlib/foo/foo.notgo"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fabf98ae628fe93b8166ee13ef0c89477880a970",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/testdata/source.monogon.dev/dut/mixed_in_group.notgo"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8c20859c61bfa25172532dcdfc034954104d17a7",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/testdata/source.monogon.dev/dut/okay.notgo"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "902ccfec1979c476a980eed7ea1958998aaddd22",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/testdata/source.monogon.dev/dut/unsorted_group.notgo"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d9b021d803687fbcdf19394143d71e715db483a9",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/testdata/source.monogon.dev/dut/wrong_group_order.notgo"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "55c21f80aa6524ff206213a9453abd5e759c8f48",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/testdata/source.monogon.dev/lib/lib.notgo"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2a93cdef549545101b086408d9ee767fda0c02c2",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/testdata/source.monogon.dev/project/a/a.notgo"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e0836a8839424e5d84578830d98c7f53d5f8d738",
      "new_mode": 33188,
      "new_path": "build/analysis/importsort/testdata/source.monogon.dev/project/b/b.notgo"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "42666bf1f25f6cccd5ef29ff7e4d361832cf1e94",
      "new_mode": 33188,
      "new_path": "build/analysis/lib/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "209a73f026faaea7aab588d9e674bb335728b4f3",
      "new_mode": 33188,
      "new_path": "build/analysis/lib/generated.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "044eb95d044ea4d9f7069dd5a7ed7cda9a14279b",
      "new_mode": 33188,
      "new_path": "build/analysis/lib/genstd/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eae356b9f762170e5fa2868287114b932cb5ef58",
      "new_mode": 33188,
      "new_path": "build/analysis/lib/genstd/main.go"
    },
    {
      "type": "modify",
      "old_id": "1770430a13b849f162418287f924f6b0d4aa2afa",
      "old_mode": 33188,
      "old_path": "build/analysis/noioutil/BUILD.bazel",
      "new_id": "e627a0c019353fc6ff16c18ae6621f804403341e",
      "new_mode": 33188,
      "new_path": "build/analysis/noioutil/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "96286e343933486f8dfc7eeca4cb602a391e3a9e",
      "old_mode": 33188,
      "old_path": "build/analysis/noioutil/noioutil.go",
      "new_id": "b98a92144b94497be8eff420c8e58f84997a93e4",
      "new_mode": 33188,
      "new_path": "build/analysis/noioutil/noioutil.go"
    }
  ]
}
