Skip to content

Commit

Permalink
Changes after first review
Browse files Browse the repository at this point in the history
Signed-off-by: Jakub Stejskal <[email protected]>
  • Loading branch information
Frawless committed Oct 14, 2024
1 parent 8a454fd commit 27edb85
Showing 1 changed file with 39 additions and 20 deletions.
59 changes: 39 additions & 20 deletions packit_service/worker/helpers/testing_farm.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ class CommentArguments:
"""

def __init__(self, command_prefix: str, comment: str):
self.parser = None
self.packit_command: str = None
self.identifier: str = None
self.labels: List[str] = None
Expand All @@ -71,6 +72,9 @@ def __init__(self, command_prefix: str, comment: str):
if comment is None:
return

# Init argparse
self.parser = self.init_arg_parse

# Remove the command prefix from the comment
logger.debug(f"Parsing comment -> {comment}")
logger.debug(f"Used command prefix -> {command_prefix}")
Expand All @@ -88,22 +92,31 @@ def __init__(self, command_prefix: str, comment: str):
args_list = shlex.split(arguments_str)
logger.debug(f"Arguments list after shlex splitting: {args_list}")

# Set up argparse
parser = argparse.ArgumentParser()
parser.add_argument("packit_command")
parser.add_argument("--identifier", "--id", "-i")
parser.add_argument("--labels")
parser.add_argument("--env", action="append") # Allows multiple --env arguments

# Parse known arguments
try:
args, unknown_args = parser.parse_known_args(args_list)
args, unknown_args = self.parser.parse_known_args(args_list)
logger.debug(f"Parsed known args: {args}")
logger.debug(f"Unknown args: {unknown_args}")
except argparse.ArgumentError as e:
logger.error(f"Argument parsing error: {e}")
return

self.parse_known_arguments(args)
self.parse_unknown_arguments(unknown_args)

@property
def init_arg_parse(self):
# Set up argparse
parser = argparse.ArgumentParser()
parser.add_argument("packit_command")
parser.add_argument("--identifier", "--id", "-i")
parser.add_argument("--labels")
# Allows multiple --env arguments
parser.add_argument("--env", action="append")

return parser

def parse_known_arguments(self, args: argparse.Namespace) -> None:
# Assign the parsed arguments to the class attributes
self.packit_command = args.packit_command
logger.debug(f"Parsed packit_command: {self.packit_command}")
Expand All @@ -116,10 +129,19 @@ def __init__(self, command_prefix: str, comment: str):
logger.debug(f"Parsed labels: {self.labels}")

if args.env:
# Parse envs into dictionary
self.envs = dict(env.split("=") for env in args.env)
logger.debug(f"Parsed envs: {self.envs}")

self.envs = {}
for env in args.env:
if "=" in env:
key, value = env.split("=", 1)
self.envs[key] = value
logger.debug(f"Added env variable: {key}={value}")
else:
logger.error(
f"Invalid format for '--env' argument: '{env}'. Expected VAR_NAME=value."
)
continue

def parse_unknown_arguments(self, unknown_args: List[str]) -> None:
# Process unknown_args to find pr_argument
pr_argument_pattern = re.compile(r"^[^/\s]+/[^#\s]+#\d+$")
for arg in unknown_args:
Expand Down Expand Up @@ -557,14 +579,11 @@ def _payload(
predefined_environment.update(env_variables)

# User-defined variables from comments have priority
if self.is_comment_event:
if self.comment_arguments.envs is not None:
env_variables = {
k: v
for k, v in self.comment_arguments.envs.items()
if v is not None
}
predefined_environment.update(env_variables)
if self.is_comment_event and self.comment_arguments.envs is not None:
env_variables = {
k: v for k, v in self.comment_arguments.envs.items() if v is not None
}
predefined_environment.update(env_variables)

environment: Dict[str, Any] = {
"arch": arch,
Expand Down

0 comments on commit 27edb85

Please sign in to comment.