Newer
Older
import json
content = json.loads(open('help.json').read())
d = {}
for key in content:
if key in d:
raise ValueError('Duplicated key {}'.format(key))
else:
d[key]=''
item=content[key]
if 'title' not in item:
raise ValueError('Missing key : title in {}'.format(key))
if 'description' not in item:
raise ValueError('Missing key : description in {}'.format(key))
if 'options' in item:
if len(item['options']) < 1:
raise ValueError('Empty options in {}'.format(key))
for option in item['options']:
if option not in content:
raise ValueError('Missing item {} in {}'.format(option, key))
elif 'action' not in item:
raise ValueError('Missing action in {}'.format(key))
# Check cycle
def run(key, content, path):
if key in path:
raise ValueError('Cycling path {}'.format(path))
path.append(key)
item=content[key]
if 'action' in item:
path.append(item['action'])
return None
else:
for option in item['options']:
run(option, content, path.copy())
run('root', content, [])