Skip to content
Snippets Groups Projects
Commit df8d14ba authored by Christian Engwer's avatar Christian Engwer
Browse files

[python] fix parser for `dune.module` files

The `dune.module` file containes meta-data and optionally bash function
definitions to hook into dunecontrol.

We now use regular expression to properly parse the meta-data.
parent fae77c75
No related branches found
No related tags found
1 merge request!918Fix #236
......@@ -101,22 +101,29 @@ class VersionRequirement:
else:
return ''
class Description:
def __init__(self, fileName=None, **kwargs):
data = kwargs.copy()
valid_entries = ['Module','Maintainer','Version','Maintainer',
'Depends','Suggests',
'Whitespace-Hook',
'Author','Description','URL']
if fileName is not None:
with io.open(fileName, 'r', encoding='utf-8') as file:
import re
for line in file:
line = line.strip()
if not line or line[ 0 ] == '#':
continue
pos = line.find(':')
if pos < 0:
raise ValueError('Invalid key:value pair (' + line + ').')
data[line[:pos].strip().lower()] = line[pos+1:].strip()
m = re.search(r'^(\w+):(.*)', line)
if m:
key = m.group(1)
val = m.group(2)
if not key in valid_entries:
raise ValueError('Invalid dune.module entry %s (%s).' % (key,fileName))
data[key.lower()] = val.strip()
try:
self.name = data['module']
except KeyError:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment