@ -36,7 +36,7 @@ class ConfigChanger(object):
#
# Increment this when making changes to the config, so that reliant
# code can determine whether the config needs to be re-applied.
VERSION : int = 5
VERSION : int = 4
def __init__ (
self ,
@ -67,20 +67,12 @@ class ConfigChanger(object):
return _url_shortname ( parts )
@functools.cached_property
def _host_url ( self ) - > str :
# Example: https://chromium.googlesource.com
# Example: https://chromium-review.googlesource.com
parts : urllib . parse . SplitResult = urllib . parse . urlsplit (
self . _remote_url )
return _url_host_url ( parts )
@functools.cached_property
def _root_url ( self ) - > str :
def _base_url ( self ) - > str :
# Example: https://chromium.googlesource.com/
# Example: https://chromium-review.googlesource.com/
parts : urllib . parse . SplitResult = urllib . parse . urlsplit (
self . _remote_url )
return _url_root_url( parts )
return parts . _replace ( path = ' / ' , query = ' ' , fragment = ' ' ) . geturl ( )
@classmethod
def new_from_env ( cls , cwd : str , cl : git_cl . Changelist ) - > ConfigChanger :
@ -158,7 +150,7 @@ class ConfigChanger(object):
def _apply_cred_helper ( self , cwd : str ) - > None :
""" Apply config changes relating to credential helper. """
cred_key : str = f ' credential. { self . _ host _url} .helper '
cred_key : str = f ' credential. { self . _ base _url} .helper '
if self . mode == ConfigMode . NEW_AUTH :
self . _set_config ( cwd , cred_key , ' ' , modify_all = True )
self . _set_config ( cwd , cred_key , ' luci ' , append = True )
@ -169,10 +161,6 @@ class ConfigChanger(object):
else :
raise TypeError ( f ' Invalid mode { self . mode !r} ' )
# Cleanup old from version 4
old_key : str = f ' credential. { self . _root_url } .helper '
self . _set_config ( cwd , old_key , None , modify_all = True )
def _apply_sso ( self , cwd : str ) - > None :
""" Apply config changes relating to SSO. """
sso_key : str = f ' url.sso:// { self . _shortname } /.insteadOf '
@ -184,7 +172,7 @@ class ConfigChanger(object):
self . _set_config ( cwd , http_key , self . _remote_url , modify_all = True )
elif self . mode == ConfigMode . NEW_AUTH_SSO :
self . _set_config ( cwd , ' protocol.sso.allow ' , ' always ' )
self . _set_config ( cwd , sso_key , self . _ root _url, modify_all = True )
self . _set_config ( cwd , sso_key , self . _ base _url, modify_all = True )
self . _set_config ( cwd , http_key , None , modify_all = True )
elif self . mode == ConfigMode . NO_AUTH :
self . _set_config ( cwd , ' protocol.sso.allow ' , None )
@ -208,7 +196,7 @@ class ConfigChanger(object):
def _apply_global_cred_helper ( self , cwd : str ) - > None :
""" Apply config changes relating to credential helper. """
cred_key : str = f ' credential. { self . _ host _url} .helper '
cred_key : str = f ' credential. { self . _ base _url} .helper '
if self . mode == ConfigMode . NEW_AUTH :
self . _set_config ( cwd , cred_key , ' ' , scope = ' global ' , modify_all = True )
self . _set_config ( cwd , cred_key , ' luci ' , scope = ' global ' , append = True )
@ -223,10 +211,6 @@ class ConfigChanger(object):
else :
raise TypeError ( f ' Invalid mode { self . mode !r} ' )
# Cleanup old from version 4
old_key : str = f ' credential. { self . _root_url } .helper '
self . _set_config ( cwd , old_key , None , modify_all = True )
def _apply_global_sso ( self , cwd : str ) - > None :
""" Apply config changes relating to SSO. """
sso_key : str = f ' url.sso:// { self . _shortname } /.insteadOf '
@ -245,7 +229,7 @@ class ConfigChanger(object):
scope = ' global ' )
self . _set_config ( cwd ,
sso_key ,
self . _ root _url,
self . _ base _url,
scope = ' global ' ,
modify_all = True )
elif self . mode == ConfigMode . NO_AUTH :
@ -339,21 +323,3 @@ def _url_shortname(parts: urllib.parse.SplitResult) -> str:
if name . endswith ( ' -review ' ) :
name = name [ : - len ( ' -review ' ) ]
return name
def _url_host_url ( parts : urllib . parse . SplitResult ) - > str :
""" Format URL with host only (no path).
Example : https : / / chromium . googlesource . com
Example : https : / / chromium - review . googlesource . com
"""
return parts . _replace ( path = ' ' , query = ' ' , fragment = ' ' ) . geturl ( )
def _url_root_url ( parts : urllib . parse . SplitResult ) - > str :
""" Format URL with root path.
Example : https : / / chromium . googlesource . com /
Example : https : / / chromium - review . googlesource . com /
"""
return parts . _replace ( path = ' / ' , query = ' ' , fragment = ' ' ) . geturl ( )