)]}'
{
  "commit": "a8a3263a2366466fbb7c808d4a9da4cef5e337f8",
  "tree": "098cc420d7e9aa680ffba2fca435dd24987b0e39",
  "parents": [
    "2bdc826331464abef94ae7e60221586f44930f64"
  ],
  "author": {
    "name": "Chad Reynolds",
    "email": "chadreynolds@google.com",
    "time": "Wed Jan 17 18:25:23 2024 -0800"
  },
  "committer": {
    "name": "Chad Reynolds",
    "email": "chadreynolds@google.com",
    "time": "Mon Jan 22 14:25:56 2024 -0800"
  },
  "message": "Add new, specific credential flags\n\nThe \"new\" `GetCredentialSourceLegacy` is nearly identical to the\nprevious `GetCredentialSource`, except the new `ReadFileContents` was\nfactored out into a helper to keep all of that code in sync.  The error\nmessages will be slightly more verbose now.\n\nThe flag parsing (and the `CredentialSource` retrieval logic) enforce\nmutual exclusion between these new flags and the deprecated\n`credential_source` to avoid an explicit or implicit precedence between\nthem.\n\nBug: 320798446\nTest: cvd fetch --target_directory\u003dfetch_test --default_build\u003daosp-main\nTest: # works as expected, falls back to the legacy code and uses `.dat`\nfile or no credentials\n\nTest: cvd fetch --credential_source\u003dtest --use_gce_metadata\u003dtrue\n--credential_filepath\u003dabc --service_account_filepath\u003d123\nTest: # the error message should show a count of \"4\" for set credential\nflags, detecting the overlap of the previous flag and the new ones\nTest: cvd fetch --target_directory\u003dfetch_test --default_build\u003daosp-main\n--use_gce_metadata\u003dtrue\nTest: # errors, no fallback\nTest: cvd fetch --target_directory\u003dfetch_test --default_build\u003daosp-main\n--credential_filepath\u003dabc\nTest: # errors that the file does not exist, no fallback\nTest: cvd fetch --target_directory\u003dfetch_test --default_build\u003daosp-main\n--service_account_filepath\u003dabc\nTest: # errors that the file does not exist, no fallback\n\nChange-Id: Ie4bc6fdbdcb54d97fc9466d328629b9cfeeef6f6\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d07657915f6827cf9face0bb2e835ae3a65a1526",
      "old_mode": 33188,
      "old_path": "common/libs/utils/files.cpp",
      "new_id": "f6c5b38f2cb10b906e370567dda325e5a4e31bf4",
      "new_mode": 33188,
      "new_path": "common/libs/utils/files.cpp"
    },
    {
      "type": "modify",
      "old_id": "e46f8b9cc9d687138196709cc2769dbca63548ed",
      "old_mode": 33188,
      "old_path": "common/libs/utils/files.h",
      "new_id": "b4cfd1b585ff005b848a01afa53b2e20a1f3556f",
      "new_mode": 33188,
      "new_path": "common/libs/utils/files.h"
    },
    {
      "type": "modify",
      "old_id": "c96b0023451d27a0b7163f5708f7ca5e7fc5e0cd",
      "old_mode": 33188,
      "old_path": "host/commands/cvd/fetch/fetch_cvd.cc",
      "new_id": "186120721a58164af8b3b16be8d6a6767912c680",
      "new_mode": 33188,
      "new_path": "host/commands/cvd/fetch/fetch_cvd.cc"
    },
    {
      "type": "modify",
      "old_id": "d24c947098ba5e997a1549c900c33719f11072d5",
      "old_mode": 33188,
      "old_path": "host/commands/cvd/fetch/fetch_cvd_parser.cc",
      "new_id": "1b12fb8decc7d91ccc62e58d00f2d121ad110cb3",
      "new_mode": 33188,
      "new_path": "host/commands/cvd/fetch/fetch_cvd_parser.cc"
    },
    {
      "type": "modify",
      "old_id": "97fe90e4bbbf61a620b04b73c7551e385f9e9aa7",
      "old_mode": 33188,
      "old_path": "host/commands/cvd/fetch/fetch_cvd_parser.h",
      "new_id": "8f64917a5d09590ab45adeb0fc126eb4699f861d",
      "new_mode": 33188,
      "new_path": "host/commands/cvd/fetch/fetch_cvd_parser.h"
    },
    {
      "type": "modify",
      "old_id": "8a5d37b82c635e6152cb58942f61ce04f381a2ec",
      "old_mode": 33188,
      "old_path": "host/libs/web/credential_source.cc",
      "new_id": "42d19b52b7067fe6852c56e786febc33f99dbac8",
      "new_mode": 33188,
      "new_path": "host/libs/web/credential_source.cc"
    },
    {
      "type": "modify",
      "old_id": "4970fdaaf50055060d78511aa15a4f30bb172443",
      "old_mode": 33188,
      "old_path": "host/libs/web/credential_source.h",
      "new_id": "e7cc2752c2f7c16b3e1e1b1e0ccdb08e7e451eed",
      "new_mode": 33188,
      "new_path": "host/libs/web/credential_source.h"
    }
  ]
}
