Skip to content

Commit

Permalink
Add ability to define DLRN driver in INI config file
Browse files Browse the repository at this point in the history
Currently, the patch_rebaser script only gets parameter from
'downstream_driver' section of the DLRN projects.ini file, which is
hardcoded [1].
This patch aims to add support of defining the driver, thus the INI
section, where we want to get the 'downstream_distro_branch' value.

We set 'downstream_driver' as default value for 'dlrn_driver' key.

[1] https://github.com/release-depot/patch_rebaser/blob/d81ca9a64acb6c0b8638373c3aea2ca15e796a77/patch_rebaser/patch_rebaser.py#L76
  • Loading branch information
jcapiitao committed Apr 8, 2024
1 parent bb831e5 commit 3205fd5
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 8 deletions.
3 changes: 3 additions & 0 deletions patch_rebaser/patch_rebaser.ini.example
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ git_email = [email protected]
packages_to_process =
# Location of DLRN projects.ini file (optional)
dlrn_projects_ini =
# DLRN driver used, in order to get the parameters from the right
# section of the DLRN projects.ini file. (optional)
dlrn_driver =
# Do not force-push to remotes or do other destructive operations
# while in development mode
dev_mode = true
Expand Down
15 changes: 9 additions & 6 deletions patch_rebaser/patch_rebaser.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,14 @@ def create_patches_branch(repo, commit, remote, dev_mode=True):
return branch_name


def get_downstream_distgit_branch(dlrn_projects_ini):
def get_downstream_distgit_branch(dlrn_projects_ini, dlrn_driver):
"""Get downstream distgit branch info from DLRN projects.ini"""
config = configparser.ConfigParser()
config.read(dlrn_projects_ini)
return config.get('downstream_driver', 'downstream_distro_branch')
return config.get(dlrn_driver, 'downstream_distro_branch')


def get_patches_branch(repo, remote, dlrn_projects_ini):
def get_patches_branch(repo, remote, dlrn_projects_ini, dlrn_driver):
"""Get the patches branch name"""
branch_name = os.environ.get('PATCHES_BRANCH', None)
if branch_name:
Expand All @@ -87,7 +87,8 @@ def get_patches_branch(repo, remote, dlrn_projects_ini):
return None
else:
# Get downstream distgit branch from DLRN config
distgit_branch = get_downstream_distgit_branch(dlrn_projects_ini)
distgit_branch = get_downstream_distgit_branch(dlrn_projects_ini,
dlrn_driver)
LOGGER.warning("No PATCHES_BRANCH env var found, trying to guess it")
# Guess at patches branch based on the distgit branch name
return find_patches_branch(repo, remote, distgit_branch)
Expand Down Expand Up @@ -188,7 +189,7 @@ def get_rebaser_config(defaults=None):
"""
default_options = ['dev_mode', 'remote_name', 'git_name', 'git_email',
'packages_to_process', 'dlrn_projects_ini',
'create_patches_branch']
'create_patches_branch', 'dlrn_driver']
distroinfo_options = ['patches_repo_key']

RebaserConfig = namedtuple('RebaserConfig',
Expand Down Expand Up @@ -426,6 +427,7 @@ def main():

# Default values for options in patch_rebaser.ini
defaults = {
'dlrn_driver': 'downstream_driver',
'remote_name': 'remote_name',
'git_name': 'Your Name',
'git_email': '[email protected]',
Expand Down Expand Up @@ -469,7 +471,8 @@ def main():
# Create local patches branch
branch_name = get_patches_branch(repo,
config.remote_name,
config.dlrn_projects_ini)
config.dlrn_projects_ini,
config.dlrn_driver)

# Not every project has a -patches branch for every release
if not branch_name:
Expand Down
8 changes: 6 additions & 2 deletions tests/test_patch_rebaser.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,10 +306,12 @@ def test_get_rebaser_config_with_fallback_value(mock_config):
AND an option doesn't exist in the config
THEN the value from the dictionary is returned
"""
defaults = {'git_name': 'TEST', 'remote_name': 'Wrong_name'}
defaults = {'git_name': 'TEST',
'dlrn_driver': 'downstream_driver'}
config = get_rebaser_config(defaults)

assert config.git_name == defaults['git_name']
assert config.dlrn_driver == defaults['dlrn_driver']


def test_get_rebaser_config_defaults_dont_override_ini_values(mock_config):
Expand All @@ -319,7 +321,9 @@ def test_get_rebaser_config_defaults_dont_override_ini_values(mock_config):
AND an option exists both in the ini config and the defaults dictionary
THEN the value from the ini config is returned
"""
defaults = {'git_name': 'TEST', 'remote_name': 'Wrong_name'}
defaults = {'git_name': 'TEST',
'dlrn_driver': 'downstream_driver',
'remote_name': 'Wrong_name'}
config = get_rebaser_config(defaults)

assert config.remote_name == "test_remote_name"
Expand Down

0 comments on commit 3205fd5

Please sign in to comment.