123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # 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')
|