| # Copyright (c) 2024 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Defines common conditions for the new auth stack migration.""" |
| |
| from __future__ import annotations |
| |
| import os |
| import sys |
| |
| import scm |
| |
| |
| def Enabled() -> bool: |
| """Returns True if new auth stack is enabled.""" |
| if not SwitchedOn(): |
| return False |
| if _HasGitcookies(): |
| _PrintGitcookiesWarning() |
| return False |
| return True |
| |
| |
| def SwitchedOn() -> bool: |
| """Returns True if new auth stack is "switched on". |
| |
| Note that this does not necessarily mean that new auth is enabled. |
| In particular, we still disable new auth if a .gitcookies file is |
| present, to protect bots that haven't been migrated yet. |
| """ |
| if Default(): |
| return not ExplicitlyDisabled() |
| return ExplicitlyEnabled() |
| |
| |
| def Default() -> bool: |
| "Returns default enablement status for new auth stack." |
| return True |
| |
| |
| def _HasGitcookies() -> bool: |
| """Returns True if user has gitcookies file.""" |
| return os.path.exists(os.path.expanduser('~/.gitcookies')) |
| |
| |
| _warning_printed = False |
| |
| |
| def _PrintGitcookiesWarning() -> None: |
| global _warning_printed |
| if _warning_printed: |
| return |
| _warning_printed = True |
| sys.stderr.write(''' |
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Warning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
| depot_tools will soon stop using the .gitcookies file for authentication. |
| |
| To silence this warning, please run `git cl creds-check` which will help you fix this. |
| |
| If you encounter any issues, please report them using: |
| https://issues.chromium.org/issues/new?component=1456702&template=2076315 |
| -------------------------------------------------------------------------------- |
| |
| ''') |
| |
| |
| def ExplicitlyEnabled() -> bool: |
| """Returns True if new auth stack is explicitly enabled. |
| |
| Directly checks config and doesn't do gitcookie check. |
| """ |
| return scm.GIT.GetConfig(os.getcwd(), |
| 'depot-tools.usenewauthstack') in ('yes', 'on', |
| 'true', '1') |
| |
| |
| def ExplicitlyDisabled() -> bool: |
| """Returns True if new auth stack is explicitly disabled.""" |
| return scm.GIT.GetConfig(os.getcwd(), |
| 'depot-tools.usenewauthstack') in ('no', 'off', |
| 'false', '0') |