From: Simon Glass <simon.glass@canonical.com> Move the handling of tag lines (name:, desc:, fragment:, targets:) into a separate method to reduce complexity of parse() Co-developed-by: Claude Opus 4.5 <noreply@anthropic.com> Signed-off-by: Simon Glass <simon.glass@canonical.com> --- tools/buildman/boards.py | 49 +++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/tools/buildman/boards.py b/tools/buildman/boards.py index 3b132691435..1983e4a50d6 100644 --- a/tools/buildman/boards.py +++ b/tools/buildman/boards.py @@ -1114,24 +1114,37 @@ class ExtendedParser: f'{fname}:{linenum}: Invalid target regex') self.targets.append(['regex', line.strip()]) else: - pair = line.split(':') - if len(pair) != 2: - raise ValueError(f'{fname}:{linenum}: Invalid tag') - tag, rest = pair - value = rest.strip() - if tag == 'name': - self.finish() - if ' ' in value: - raise ValueError(f'{fname}:{linenum}: Invalid name') - self.name = value - elif tag == 'desc': - self.desc = value - elif tag == 'fragment': - self.fragments.append(value) - elif tag == 'targets': - self.in_targets = True - else: - raise ValueError(f"{fname}:{linenum}: Unknown tag '{tag}'") + self._parse_tag(fname, linenum, line) self.finish() return self.extended + + def _parse_tag(self, fname, linenum, line): + """Parse a tag line (one not starting with a space) + + Args: + fname (str): Filename (for error messages) + linenum (int): Line number (for error messages) + line (str): Line to parse + + Raises: + ValueError: Invalid syntax + """ + pair = line.split(':') + if len(pair) != 2: + raise ValueError(f'{fname}:{linenum}: Invalid tag') + tag, rest = pair + value = rest.strip() + if tag == 'name': + self.finish() + if ' ' in value: + raise ValueError(f'{fname}:{linenum}: Invalid name') + self.name = value + elif tag == 'desc': + self.desc = value + elif tag == 'fragment': + self.fragments.append(value) + elif tag == 'targets': + self.in_targets = True + else: + raise ValueError(f"{fname}:{linenum}: Unknown tag '{tag}'") -- 2.43.0