UBUNTU: [Packaging] annotations: Fail on invalid lines

Currently, invalid lines are silently ignored, which is not good.
Fix this by raising an exception if the line can't be parsed. While at
it, remove one level of nesting by using if-continue.

Signed-off-by: Juerg Haefliger <juerg.haefliger@canonical.com>
Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
This commit is contained in:
Juerg Haefliger
2023-02-07 08:36:06 +01:00
committed by Paolo Pisati
parent 7e9800b36e
commit e011f2959f
+29 -24
View File
@@ -68,33 +68,38 @@ class Annotation(Config):
include_fname = dirname(abspath(self.fname)) + '/' + m.group(1)
include_data = self._load(include_fname)
self._parse_body(include_data)
else:
# Handle policy and note lines
if re.match(r'.* (policy|note)<', line):
try:
conf = line.split(' ')[0]
if conf in self.config:
entry = self.config[conf]
else:
entry = {'policy': {}}
continue
match = False
m = re.match(r'.* policy<(.*?)>', line)
if m:
match = True
entry['policy'] |= literal_eval(m.group(1))
# Handle policy and note lines
if re.match(r'.* (policy|note)<', line):
try:
conf = line.split(' ')[0]
if conf in self.config:
entry = self.config[conf]
else:
entry = {'policy': {}}
m = re.match(r'.* note<(.*?)>', line)
if m:
entry['oneline'] = match
match = True
entry['note'] = "'" + m.group(1).replace("'", '') + "'"
match = False
m = re.match(r'.* policy<(.*?)>', line)
if m:
match = True
entry['policy'] |= literal_eval(m.group(1))
if not match:
raise Exception('syntax error')
self.config[conf] = entry
except Exception as e:
raise Exception(str(e) + f', line = {line}')
m = re.match(r'.* note<(.*?)>', line)
if m:
entry['oneline'] = match
match = True
entry['note'] = "'" + m.group(1).replace("'", '') + "'"
if not match:
raise Exception('syntax error')
self.config[conf] = entry
except Exception as e:
raise Exception(str(e) + f', line = {line}')
continue
# Invalid line
raise Exception(f'invalid line: {line}')
"""
Parse main annotations file, individual config options can be accessed via