)]}'
{
  "commit": "0b43e238182cdcf6207c53df0202b0a216b091eb",
  "tree": "a3833eed5cf275739692501a5a3b0715356b83c0",
  "parents": [
    "eb2deca5b4489709acd001a5c7fd2df4f1eed19d"
  ],
  "author": {
    "name": "Nate Bosch",
    "email": "nbosch@google.com",
    "time": "Wed Mar 10 17:16:03 2021 -0800"
  },
  "committer": {
    "name": "Nate Bosch",
    "email": "nbosch@google.com",
    "time": "Wed Mar 10 17:37:42 2021 -0800"
  },
  "message": "Add --undefok support\n\nSome other arg parsing libraries support an `--undefok` option which\nsuppresses the error that would normally surface if an unknown flag or\noption is passed.\nFor example: https://gflags.github.io/gflags/#special\n\nAdd built in support, unconditionally, for `--undefok` in the parser.\nThe `undefok` option always supports multiple values and comma separated\nvalues.\n\nIf an option named `undefok` is added to the `ArgParser` it will\noverride this behavior. It isn\u0027t possible to implement this behavior in\nthe calling code because the `callback` for when an option is parsed is\nnot triggered until after all arguments are parsed. Allowing the calling\ncode to override the `undefok` option, even though it can\u0027t implement\nthe expected semantics, retains backwards compatibility in the unlikely\ncase there are existing uses of that name.\n\n- Add an `_undefok` field to `Parser` to track the names that suppressed\n  as options are parsed. Only the top level parser in a `parent` chain\n  will handle `undefok`.\n- When parsing an otherwise unknown option named `undefok`, parse the\n  value and store in the allowed `_undefok` set.\n- When parsing an otherwise unknown option with any other name already\n  in `_undefok`, silently drop it, along with any `\u003dvalue` portion.\n\nThis implementation has the following limitations:\n- The `--undefok` option must be passed _before_ the unknown option. If\n  the arguments come in the other order it will still fail.\n- The unknown option must either be a flag, or must use the\n  `--name\u003dvalue` syntax. If it is passed as `--name value` then the\n  value will show in `argResults.rest`. This could cause the argument to\n  get misinterpreted by the app.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "25497be6f6d904b883dcf47170775224b2694274",
      "old_mode": 33188,
      "old_path": "lib/src/parser.dart",
      "new_id": "02c0dd4561c63bf2c6cfb77e52607651e2e331ee",
      "new_mode": 33188,
      "new_path": "lib/src/parser.dart"
    }
  ]
}
