)]}'
{
  "commit": "18bc9d956e707e423ff28b978d349feef2c1e0ac",
  "tree": "b321b1426a8a23c4b9b1a5958d2625d838c19c52",
  "parents": [
    "9887f1b3cb6c1c9c8c72a515a882d5eeea0d13c6"
  ],
  "author": {
    "name": "Lalit Maganti",
    "email": "lalitm@google.com",
    "time": "Mon Mar 16 06:14:46 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Mar 16 06:14:46 2026 +0000"
  },
  "message": "tp: add SubcommandContext to Subcommand interface (#5134)\n\n## Summary\n- Adds SubcommandContext struct with PlatformInterface* pointer\n- Adds GetLongOptions() pure virtual to Subcommand (returns getopt\noption array)\n- Updates FindSubcommandInArgs to derive flags_with_arg from\nGetLongOptions()\n- Updates unit tests\n\nPart 1/7 of the subcommand CLI implementation (RFC-0018).\n\n## Stack\n1. **#5134** ← this PR — SubcommandContext + GetLongOptions() interface\n2. #5128 — common_flags + query + ClassicSubcommand + dispatcher\n3. #5129 — repl + serve subcommands\n4. #5130 — summarize + export subcommands\n5. #5131 — metrics subcommand\n6. #5132 — help system + file collision + classic edge case tests\n7. #5133 — BUILD.gn consolidation",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "07af6a74045e227ce61a3ce5caaff6316b2cee34",
      "old_mode": 33188,
      "old_path": "src/trace_processor/shell/find_subcommand_unittest.cc",
      "new_id": "4f8c2ab7fb571f0b749b80d1c55c2154147df107",
      "new_mode": 33188,
      "new_path": "src/trace_processor/shell/find_subcommand_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "ca1ec8e768a9d642b33f24e6daf5622ac960dbd1",
      "old_mode": 33188,
      "old_path": "src/trace_processor/shell/subcommand.h",
      "new_id": "b1eda4434a9914391b17ef767c137be7d24e8b9a",
      "new_mode": 33188,
      "new_path": "src/trace_processor/shell/subcommand.h"
    }
  ]
}
