UBUNTU: [Packaging] annotations: prevent duplicate include lines

Includes are always parsed recursively, but when we save them (e.g.,
when the annotations file is updated) we should always save only the
top-level includes, without repeating the recursive ones.

Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
This commit is contained in:
Andrea Righi
2023-03-28 12:50:39 +02:00
committed by Paolo Pisati
parent 18f0cda30d
commit 281ad73637
+4 -3
View File
@@ -61,7 +61,7 @@ class Annotation(Config):
"""
Parse body of annotations file
"""
def _parse_body(self, data: str):
def _parse_body(self, data: str, parent=True):
for line in data.splitlines():
# Replace tabs with spaces, squeeze multiple into singles and
# remove leading and trailing spaces
@@ -85,10 +85,11 @@ class Annotation(Config):
# Handle includes (recursively)
m = re.match(r'^include\s+"?([^"]*)"?', line)
if m:
self.include.append(m.group(1))
if parent:
self.include.append(m.group(1))
include_fname = dirname(abspath(self.fname)) + '/' + m.group(1)
include_data = self._load(include_fname)
self._parse_body(include_data)
self._parse_body(include_data, parent=False)
continue
# Handle policy and note lines