diff --git a/git_cl.py b/git_cl.py index e88bfc6e76..0417eb63d0 100755 --- a/git_cl.py +++ b/git_cl.py @@ -3902,7 +3902,7 @@ def CMDcreds_check(parser, args): """Checks credentials and suggests changes.""" _, _ = parser.parse_args(args) - if newauth.Enabled(): + if newauth.EnabledInConfig(): cl = Changelist() try: remote_url = cl.GetRemoteUrl() diff --git a/newauth.py b/newauth.py index def10f9901..ac18c25ddc 100644 --- a/newauth.py +++ b/newauth.py @@ -6,12 +6,53 @@ from __future__ import annotations import os +import sys import scm def Enabled() -> bool: """Returns True if new auth stack is enabled.""" + if not EnabledInConfig(): + return False + if _HasGitcookies(): + _PrintGitcookiesWarning() + return False + 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(f''' +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Warning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +depot_tools will soon stop using the .gitcookies file for authentication. + +To silence this warning, please move or delete {os.path.expanduser('~/.gitcookies')}, +or you can 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 EnabledInConfig() -> bool: + """Returns True if new auth stack is enabled. + + Directly checks config and doesn't do gitcookie check. + """ return scm.GIT.GetConfig(os.getcwd(), 'depot-tools.usenewauthstack') in ('yes', 'on', 'true', '1')