Git commit 13a58615d0d49709345cc4dca8eef41b991dd2a2 by Alex Merry. Committed on 11/11/2015 at 23:51. Pushed by alexmerry into branch 'master'.
Make kgenframeworksapidox more robust. It should be harder to break it with unusual or broken metainfo.yaml files now. CCMAIL: allen.d.win...@gmail.com CCMAIL: kde-frameworks-devel@kde.org M +1 -1 src/kapidox/data/templates/fwinfo.html M +21 -11 src/kgenframeworksapidox http://commits.kde.org/kapidox/13a58615d0d49709345cc4dca8eef41b991dd2a2 diff --git a/src/kapidox/data/templates/fwinfo.html b/src/kapidox/data/templates/fwinfo.html index 8e6dfdf..a8f263d 100644 --- a/src/kapidox/data/templates/fwinfo.html +++ b/src/kapidox/data/templates/fwinfo.html @@ -37,7 +37,7 @@ <dd>IRC channel: {{ fwinfo.irc|default("#kde-devel") }} on Freenode</dd> <dd><a href="https://mail.kde.org/mailman/listinfo/{{ fwinfo.mailinglist|default("kde-frameworks-devel") }}">Mailing list</a></dd> -{% if fwinfo.libraries|count != 0 %} +{% if fwinfo.libraries is iterable and fwinfo.libraries|count != 0 %} <dt>Use with <a href="https://techbase.kde.org/Development/Tutorials/CMake">CMake</a></dt> <dd><pre class="fragment">find_package({{ fwinfo.cmakename }}) target_link_libraries(yourapp{% for lib in fwinfo.libraries %} {{ lib.cmake }}{% endfor %})</pre></dd> diff --git a/src/kgenframeworksapidox b/src/kgenframeworksapidox index 47d0f07..714fc77 100755 --- a/src/kgenframeworksapidox +++ b/src/kgenframeworksapidox @@ -102,14 +102,13 @@ def process_toplevel_html_file(outputfile, doxdatadir, tiers, title, # Extend framework info fw['href'] = fw['outputdir'] + '/html/index.html' - # Fix broken frameworks lacking platform definitions - if fw['platforms'] is None: - logging.warning('{} framework lacks platform definitions'.format(fw['fancyname'])) + try: + platform_lst = [x['name'] for x in fw['platforms'] if x['name'] not in (PLATFORM_ALL, PLATFORM_UNKNOWN)] + available_platforms.update(set(platform_lst)) + except (KeyError, TypeError): + logging.warning('{} framework lacks valid platform definitions'.format(fw['fancyname'])) fw['platforms'] = [dict(name=PLATFORM_UNKNOWN)] - platform_lst = [x['name'] for x in fw['platforms'] if x['name'] not in (PLATFORM_ALL, PLATFORM_UNKNOWN)] - available_platforms.update(set(platform_lst)) - lst.append(fw) lst.sort(key=lambda x: x['fancyname'].lower()) @@ -222,16 +221,27 @@ def create_fw_info(frameworksdir, modulename, maintainers): outputdir = modulename # FIXME: option in yaml file to disable docs - metainfo = yaml.load(open(yaml_file)) - tier = metainfo["tier"] + try: + metainfo = yaml.load(open(yaml_file)) + except: + logging.warning('Could not load metainfo.yaml for {}, skipping it'.format(modulename)) + return None + + if metainfo is None: + logging.warning('Empty metainfo.yaml for {}, skipping it'.format(modulename)) + return None + + tier = metainfo.get("tier") if tier is None: - logging.warning('Could not find tier for {}'.format(framework)) + logging.warning('Could not find tier for {}, skipping it'.format(modulename)) return None elif tier < 1 or tier > 4: - logging.warning('Invalid tier {} for {}'.format(tier, framework)) + logging.warning('Invalid tier {} for {}, skipping it'.format(tier, modulename)) return None - if isinstance(metainfo['maintainer'],list): + if 'maintainer' not in metainfo: + fw_maintainers = [] + elif isinstance(metainfo['maintainer'],list): fw_maintainers = map(lambda x: maintainers.get(x, None), metainfo['maintainer']) else: _______________________________________________ Kde-frameworks-devel mailing list Kde-frameworks-devel@kde.org https://mail.kde.org/mailman/listinfo/kde-frameworks-devel