mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-10-31 13:38:47 +00:00
77 lines
2.2 KiB
Python
77 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
|
|
|
import sys
|
|
import os
|
|
import xml.etree.ElementTree as etree
|
|
|
|
passed = True
|
|
|
|
def check_result(check, message):
|
|
global passed
|
|
if check:
|
|
print('passed')
|
|
elif message:
|
|
print('failed: ' + message)
|
|
passed = False
|
|
else:
|
|
print('failed')
|
|
passed = False
|
|
|
|
def check_missing(items, target):
|
|
missing = []
|
|
for item in items:
|
|
if not item in target:
|
|
missing.append(item)
|
|
check_result(len(missing) == 0, ', '.join(missing))
|
|
return missing
|
|
|
|
def all_descendants(proj, name):
|
|
for e in proj.iter():
|
|
if e.tag == '{http://schemas.microsoft.com/developer/msbuild/2003}' + name:
|
|
yield e
|
|
|
|
def children(e, name):
|
|
for c in e:
|
|
if not isinstance(c, str):
|
|
if c.tag == '{http://schemas.microsoft.com/developer/msbuild/2003}' + name:
|
|
yield c
|
|
|
|
def element_map(proj, name):
|
|
print('testing for duplicate \'' + name + '\' names ... ', end='')
|
|
items = {}
|
|
duplicates = []
|
|
for e in all_descendants(proj, name):
|
|
id = e.attrib.get("Name")
|
|
if id in items.keys():
|
|
duplicates.append(id)
|
|
else:
|
|
items[id] = e
|
|
check_result(len(duplicates) == 0 , ', '.join(duplicates))
|
|
return items
|
|
|
|
def list_dictionaries():
|
|
for file in os.listdir('dictsource'):
|
|
if file.endswith('_rules'):
|
|
yield file.split('_')[0]
|
|
|
|
# 1. Check for missing/duplicate names #################################################################################
|
|
|
|
proj = etree.parse('src/windows/data.vcxproj').getroot()
|
|
targets = element_map(proj, 'Target')
|
|
|
|
# 2. Check for missing dictionaries ####################################################################################
|
|
|
|
dictionaries = list(list_dictionaries())
|
|
depends_on_dictionaries = targets['Dictionaries'].attrib.get('DependsOnTargets').split(';')
|
|
|
|
print('testing for missing dictionary targets ... ', end='')
|
|
check_missing(depends_on_dictionaries, targets.keys())
|
|
|
|
print('testing for missing dependencies on dictionaries ... ', end='')
|
|
check_missing(set.intersection(set(dictionaries), set(targets.keys())), depends_on_dictionaries)
|
|
|
|
########################################################################################################################
|
|
|
|
if not passed:
|
|
sys.exit(-1)
|