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:
committed by
Paolo Pisati
parent
7e9800b36e
commit
e011f2959f
+29
-24
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user