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