[Concept,05/12] buildman: Extract tag parsing from parse() into _parse_tag()

Message ID 20260103203243.3727493-6-sjg@u-boot.org
State New
Headers
Series buildman: Fix pylint warnings in board.py and boards.py |

Commit Message

Simon Glass Jan. 3, 2026, 8:32 p.m. UTC
  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(-)
  

Patch

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}'")