diff options
Diffstat (limited to 'runner.py')
-rw-r--r-- | runner.py | 26 |
1 files changed, 23 insertions, 3 deletions
@@ -9,6 +9,7 @@ import itertools import json import logging import os +import re import shutil import sys import traceback @@ -404,6 +405,13 @@ async def run_work_item( git_repository: git.Repository, logger: logging.Logger, ) -> Optional[common.Error]: + error: Optional[common.Error] + + submodule = get_submodule(work_item.repository) + match submodule: + case common.Error() as error: + return error + message = "Resetting the Qt repository" logger.info(message) await coordinator_connection.send_status( @@ -411,7 +419,7 @@ async def run_work_item( ) error = await reset_git_repository( git_repository=git_repository, - submodule=work_item.repository, + submodule=submodule, revision=work_item.revision, log_directory=work_item_directory, retries=3, @@ -429,7 +437,7 @@ async def run_work_item( error = await qt.Module.configure( build_directory=build_directory, repository_directory=git_repository.directory, - submodule=work_item.repository, + submodule=submodule, log_directory=work_item_directory, ) if error: @@ -442,7 +450,7 @@ async def run_work_item( ) module = await qt.Module.build( build_directory=build_directory, - submodule=work_item.repository, + submodule=submodule, test_file=runner_mode.test_file, log_directory=work_item_directory, logger=logger, @@ -502,6 +510,18 @@ async def run_work_item( return None +def get_submodule(work_item_repository: str) -> Union[common.Error, str]: + """ + Get a submodule from a work item repository string. + """ + match = re.match(pattern=r"qt/([^/]+)$", string=work_item_repository) + if not match: + return common.Error(f"Unsupported work item repository: {work_item_repository}") + + submodule = match.group(1) + return submodule + + async def reset_git_repository( git_repository: git.Repository, submodule: str, |