You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.4 KiB
Python
82 lines
2.4 KiB
Python
# 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')
|