Hello community,

here is the log from the commit of package kapidox for openSUSE:Factory checked 
in at 2020-12-15 14:51:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kapidox (Old)
 and      /work/SRC/openSUSE:Factory/.kapidox.new.2328 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kapidox"

Tue Dec 15 14:51:26 2020 rev:84 rq:855407 version:5.77.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kapidox/kapidox.changes  2020-11-23 
10:31:37.565435973 +0100
+++ /work/SRC/openSUSE:Factory/.kapidox.new.2328/kapidox.changes        
2020-12-15 14:51:28.690745917 +0100
@@ -1,0 +2,10 @@
+Sat Dec  5 18:56:12 UTC 2020 - Christophe Giboudeaux <[email protected]>
+
+- Update to 5.77.0
+  * New feature release
+  * For more details please see:
+  * https://kde.org/announcements/kde-frameworks-5.77.0
+- Changes since 5.76.0:
+  * Add QDoc support for generating documentation with QDoc
+
+-------------------------------------------------------------------

Old:
----
  kapidox-5.76.0.tar.xz
  kapidox-5.76.0.tar.xz.sig

New:
----
  kapidox-5.77.0.tar.xz
  kapidox-5.77.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kapidox.spec ++++++
--- /var/tmp/diff_new_pack.2KIYWn/_old  2020-12-15 14:51:29.438746745 +0100
+++ /var/tmp/diff_new_pack.2KIYWn/_new  2020-12-15 14:51:29.442746749 +0100
@@ -18,13 +18,13 @@
 
 # Only needed for the package signature condition
 %bcond_without lang
-%define _tar_path 5.76
+%define _tar_path 5.77
 # Full KF5 version (e.g. 5.33.0)
 %{!?_kf5_version: %global _kf5_version %{version}}
 # Last major and minor KF5 version (e.g. 5.33)
 %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | 
awk -F. '{print $1"."$2}')}
 Name:           kapidox
-Version:        5.76.0
+Version:        5.77.0
 Release:        0
 Summary:        Scripts and data for building API documentation
 License:        BSD-2-Clause


++++++ kapidox-5.76.0.tar.xz -> kapidox-5.77.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kapidox-5.76.0/setup.py new/kapidox-5.77.0/setup.py
--- old/kapidox-5.76.0/setup.py 2020-10-10 17:35:59.000000000 +0200
+++ new/kapidox-5.77.0/setup.py 2020-12-03 19:12:47.000000000 +0100
@@ -14,7 +14,7 @@
 
 setup(
         name='kapidox',
-        version='5.76.0',
+        version='5.77.0',
         description='KDE API documentation generation tools',
         maintainer = 'Olivier Churlaud',
         maintainer_email = '[email protected]',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/data/global.qdocconf 
new/kapidox-5.77.0/src/kapidox/data/global.qdocconf
--- old/kapidox-5.76.0/src/kapidox/data/global.qdocconf 1970-01-01 
01:00:00.000000000 +0100
+++ new/kapidox-5.77.0/src/kapidox/data/global.qdocconf 2020-12-03 
19:12:47.000000000 +0100
@@ -0,0 +1,4 @@
+depends += qtcore qtquick qtquickcontrols
+
+sources.fileextensions = "*.cpp *.qdoc *.qml"
+headers.fileextensions = "*.h *.ch *.h++ *.hh *.hpp *.hxx"
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kapidox-5.76.0/src/kapidox/data/templates/qdoc-sidebar.html 
new/kapidox-5.77.0/src/kapidox/data/templates/qdoc-sidebar.html
--- old/kapidox-5.76.0/src/kapidox/data/templates/qdoc-sidebar.html     
1970-01-01 01:00:00.000000000 +0100
+++ new/kapidox-5.77.0/src/kapidox/data/templates/qdoc-sidebar.html     
2020-12-03 19:12:47.000000000 +0100
@@ -0,0 +1,63 @@
+<div id="sidebar-header" class="menu-box">
+    <div class="menu-title">
+        <h2><a href="https://api.kde.org";>api.kde.org</a></h2>
+    </div>
+  </div>
+  <div class="menu-box">
+    <a name="cp-menu" />
+    <div class="menu-content">
+    {% if doxygen_menu %}
+      <ul>
+      {% for entry in doxygen_menu.entries %}
+        <li><a href="{{entry.href}}">{{entry.text}}</a></li>
+      {% endfor %}
+      </ul>
+    {% endif %}
+    </div>
+  </div>
+  
+  {% if class_map %}
+  <div class="menu_box">
+    <div class="menu-title">
+      <h2>Class Picker</h2>
+    </div>
+    <div class="menu-content">
+      <form name="guideform">
+        <select class="form-control" name="guidelinks" 
style="width:80%;margin-left:auto;margin-right:auto;" 
onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
+          <option value="annotated.html">-- Choose --</option>
+          {% for class in class_map.classes %}
+          <option value="{{class.filename}}">{{class.classname}}</option>
+          {% endfor %}
+        </select>
+      </form>
+    </div>
+  </div>
+  {% endif %}
+  
+  {% if fwinfo %}
+    {% include "libinfo.html" %}
+  {% endif %}
+  
+  {% if group_menu %}
+  <div class="menu-box">
+    <a name="cp-menu" />
+    <div class="menu-title">
+        <h2 id="cp-menu-project">{{group_menu.group_title}}</h2>
+        <a href="#cp-skip-project" class="cp-doNotDisplay">Skip menu 
"{{group_menu.group_title}}"</a>
+    </div>
+    <div class="menu-content">
+      <ul>
+        {% for section in group_menu.sections %}
+          <li>{{section.title}}
+            <ul>
+              {% for member in section.members %}
+                <li><a href="{{member.href}}">{{member.name}}</a></li>
+              {% endfor %}
+            </ul>
+          </li>
+        {% endfor %}
+      </ul>
+    </div>
+  </div>
+  {% endif %}
+  
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kapidox-5.76.0/src/kapidox/data/templates/qdoc-wrapper.html 
new/kapidox-5.77.0/src/kapidox/data/templates/qdoc-wrapper.html
--- old/kapidox-5.76.0/src/kapidox/data/templates/qdoc-wrapper.html     
1970-01-01 01:00:00.000000000 +0100
+++ new/kapidox-5.77.0/src/kapidox/data/templates/qdoc-wrapper.html     
2020-12-03 19:12:47.000000000 +0100
@@ -0,0 +1,13 @@
+{% extends "base.html" %}
+
+{% block page_title %}{{ title }}{% endblock %}
+
+{% block content %}
+
+{{ docs }}
+
+{% endblock %}
+
+{% block sidebar %}
+    {% include "qdoc-sidebar.html" %}
+{% endblock %} {# sidebar #}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/generator.py 
new/kapidox-5.77.0/src/kapidox/generator.py
--- old/kapidox-5.76.0/src/kapidox/generator.py 2020-10-10 17:35:59.000000000 
+0200
+++ new/kapidox-5.77.0/src/kapidox/generator.py 2020-12-03 19:12:47.000000000 
+0100
@@ -12,11 +12,17 @@
 import datetime
 import os
 import logging
+from os import environ
 import shutil
 import subprocess
 import tempfile
 import sys
+import pathlib
+from typing import Any, Dict
 import xml.etree.ElementTree as ET
+import re
+import glob
+from pathlib import Path
 
 import jinja2
 
@@ -25,6 +31,8 @@
 import xml.etree.ElementTree as xmlET
 import json
 
+from jinja2.environment import Template
+
 from kapidox import utils
 try:
     from kapidox import depdiagram
@@ -73,6 +81,7 @@
         'tagfiles',
         'dependency_diagram',
         'copyright',
+        'is_qdoc',
         # Output
         'outputdir',
         'htmldir',
@@ -405,6 +414,34 @@
     dct['content'] = '\n'.join(body)
     return dct
 
+def postprocess_internal_qdoc(htmldir: str, tmpl: Template, env: Dict[str, 
Any]):
+    """Substitute text in HTML files
+
+    Performs text substitutions on each line in each .html file in a directory.
+
+    Args:
+        htmldir: (string) the directory containing the .html files.
+        mapping: (dict) a dict of mappings.
+
+    """
+    for path in glob.glob(os.path.join(htmldir, "*.html")):
+        newpath = f"{path}.new"
+
+        txt = Path(path).read_text()
+        env['docs'] = txt.partition('body')[2].partition('</body>')[0]
+
+        with codecs.open(newpath, 'w', 'utf-8') as outf:
+            try:
+                html = tmpl.render(env)
+            except BaseException:
+                logging.error(f"Postprocessing {path} failed")
+                raise
+
+            outf.write(html)
+
+        os.remove(path)
+        os.rename(newpath, path)
+
 
 def postprocess_internal(htmldir, tmpl, mapping):
     """Substitute text in HTML files
@@ -481,10 +518,22 @@
         outf.write(txt)
     return out_path
 
+def generate_apidocs_qdoc(ctx: Context, tmp_dir: str, doxyfile_entries=None, 
keep_temp_dirs=False):
+    absolute = pathlib.Path(os.path.join(ctx.outputdir, 'html')).absolute()
 
-def generate_apidocs(ctx, tmp_dir, doxyfile_entries=None, 
keep_temp_dirs=False):
+    environ['KAPIDOX_DIR'] = ctx.doxdatadir
+
+    logging.info(f'Running QDoc (qdoc {ctx.fwinfo.path}/.qdocconf 
--outputdir={absolute}')
+    ret = subprocess.call(['qdoc', ctx.fwinfo.path + "/.qdocconf", 
f"--outputdir={absolute}"])
+    if ret != 0:
+        raise Exception("QDoc exited with a non-zero status code")
+
+def generate_apidocs(ctx: Context, tmp_dir, doxyfile_entries=None, 
keep_temp_dirs=False):
     """Generate the API documentation for a single directory"""
 
+    if ctx.is_qdoc:
+        return generate_apidocs_qdoc(ctx, tmp_dir, doxyfile_entries, 
keep_temp_dirs)
+
     def find_src_subdir(dirlist, deeper_subd=None):
         returnlist = []
         for d in dirlist:
@@ -580,26 +629,6 @@
     logging.info('Running Doxygen')
     subprocess.call([ctx.doxygen, doxyfile_path])
 
-
-def postprocess(ctx, classmap, template_mapping=None):
-    mapping = {
-            'doxygencss': 'doxygen.css',
-            'resources': ctx.resourcedir,
-            'title': ctx.title,
-            'fwinfo': ctx.fwinfo,
-            'copyright': ctx.copyright,
-            'doxygen_menu': {'entries': menu_items(ctx.htmldir, 
ctx.modulename)},
-            'class_map': {'classes': classmap},
-            'kapidox_version': utils.get_kapidox_version(),
-        }
-    if template_mapping:
-        mapping.update(template_mapping)
-    logging.info('Postprocessing')
-
-    tmpl = 
create_jinja_environment(ctx.doxdatadir).get_template('doxygen.html')
-    postprocess_internal(ctx.htmldir, tmpl, mapping)
-
-
 def generate_diagram(png_path, fancyname, dot_files, tmp_dir):
     """Generate a dependency diagram for a framework.
     """
@@ -673,6 +702,7 @@
                    dependency_diagram=lib.dependency_diagram,
                    # Output
                    outputdir=lib.outputdir,
+                   is_qdoc=lib.metainfo['qdoc'],
                    )
 
 
@@ -696,54 +726,62 @@
         prefix = '../../'
     return (tagfile, prefix + lib.outputdir + '/html/')
 
+def finish_fw_apidocs_doxygen(ctx: Context, env: Dict[str, Any]):
+    tmpl = 
create_jinja_environment(ctx.doxdatadir).get_template('library.html')
+    postprocess_internal(ctx.htmldir, tmpl, env)
+
+    tmpl2 = 
create_jinja_environment(ctx.doxdatadir).get_template('search.html')
+    search_output = ctx.fwinfo.outputdir + "/html/search.html"
+    with codecs.open(search_output, 'w', 'utf-8') as outf:
+        outf.write(tmpl2.render(env))
+
+def finish_fw_apidocs_qdoc(ctx: Context, env: Dict[str, Any]):
+    tmpl = 
create_jinja_environment(ctx.doxdatadir).get_template('qdoc-wrapper.html')
+    postprocess_internal_qdoc(ctx.htmldir, tmpl, env)
 
-def finish_fw_apidocs(ctx, group_menu):
+def gen_template_environment(ctx: Context) -> Dict[str, Any]:
     classmap = build_classmap(ctx.tagfile)
 
     entries = [{
         'href': '../../index.html',
         'text': 'KDE API Reference'
-        }]
-    if  ctx.fwinfo.part_of_group:
+    }]
+
+    if ctx.fwinfo.part_of_group:
         entries[0]['href'] = '../' + entries[0]['href']
-        entries.append({
-            'href': '../../index.html',
-            'text': ctx.fwinfo.product.fancyname
-            })
-    entries.append({
-        'href': 'index.html',
-        'text': ctx.fancyname
-        })
-
-    template_mapping = {
-                'breadcrumbs': {
-                    'entries': entries
-                    },
-                }
-    copyright = '1996-' + str(datetime.date.today().year) + ' The KDE 
developers'
+        entries.append({'href': '../../index.html', 'text': 
ctx.fwinfo.product.fancyname })
+
+    entries.append({'href': 'index.html', 'text': ctx.fancyname })
+
     mapping = {
-            'qch': ctx.qhp,
-            'doxygencss': 'doxygen.css',
-            'resources': ctx.resourcedir,
-            'title': ctx.title,
-            'fwinfo': ctx.fwinfo,
-            'copyright': copyright,
-            'doxygen_menu': {'entries': menu_items(ctx.htmldir, 
ctx.modulename)},
-            'class_map': {'classes': classmap},
-            'kapidox_version': utils.get_kapidox_version(),
-        }
-    if template_mapping:
-        mapping.update(template_mapping)
-    logging.info('Postprocessing')
+        'qch': ctx.qhp,
+        'doxygencss': 'doxygen.css',
+        'resources': ctx.resourcedir,
+        'title': ctx.title,
+        'fwinfo': ctx.fwinfo,
+        'copyright': f"1996-{datetime.date.today().year} The KDE developers",
+        'doxygen_menu': {'entries': menu_items(ctx.htmldir, ctx.modulename)},
+        'class_map': {'classes': classmap},
+        'kapidox_version': utils.get_kapidox_version(),
+        'breadcrumbs': {
+            'entries': entries
+        },
+    }
 
-    tmpl = 
create_jinja_environment(ctx.doxdatadir).get_template('library.html')
-    postprocess_internal(ctx.htmldir, tmpl, mapping)
+    return mapping
 
-    tmpl2 = 
create_jinja_environment(ctx.doxdatadir).get_template('search.html')
-    search_output = ctx.fwinfo.outputdir + "/html/search.html"
-    with codecs.open(search_output, 'w', 'utf-8') as outf:
-        outf.write(tmpl2.render(mapping))
+def finish_fw_apidocs(ctx: Context):
+    env = gen_template_environment(ctx)
+
+    if ctx.is_qdoc:
+        logging.info('Postprocessing QtDoc...')
 
+        finish_fw_apidocs_qdoc(ctx, env)
+
+    else:
+        logging.info('Postprocessing Doxygen...')
+
+        finish_fw_apidocs_doxygen(ctx, env)
 
 def indexer(lib):
     """ Create json index from xml
@@ -814,6 +852,9 @@
 def create_global_index(products):
     doclist = []
     for product in products:
+        if product.metainfo['qdoc']:
+            continue
+
         with open(product.outputdir+'/searchdata.json', 'r') as f:
             prodindex = json.load(f)
             for proditem in prodindex['libraries']:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/hlfunctions.py 
new/kapidox-5.77.0/src/kapidox/hlfunctions.py
--- old/kapidox-5.76.0/src/kapidox/hlfunctions.py       2020-10-10 
17:35:59.000000000 +0200
+++ new/kapidox-5.77.0/src/kapidox/hlfunctions.py       2020-12-03 
19:12:47.000000000 +0100
@@ -103,11 +103,14 @@
             shutil.rmtree(lib.outputdir)
             ctx = generator.create_fw_context(args, lib, tagfiles, copyright)
             generator.gen_fw_apidocs(ctx, tmp_dir)
-            generator.finish_fw_apidocs(ctx, None)
-            logging.info('# Generate indexing files')
-            generator.indexer(lib)
+            generator.finish_fw_apidocs(ctx)
+            if not ctx.is_qdoc:
+                logging.info('# Generate indexing files')
+                generator.indexer(lib)
         for product in products:
-            generator.create_product_index(product)
+            if not product.metainfo['qdoc']:
+                generator.create_product_index(product)
+
             if product.logo_url is not None:
                 logodir = os.path.dirname(product.logo_url)
                 if not os.path.isdir(logodir):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/models.py 
new/kapidox-5.77.0/src/kapidox/models.py
--- old/kapidox-5.76.0/src/kapidox/models.py    2020-10-10 17:35:59.000000000 
+0200
+++ new/kapidox-5.77.0/src/kapidox/models.py    2020-12-03 19:12:47.000000000 
+0100
@@ -78,6 +78,7 @@
             self.parent = self.product
         self.product.libraries.append(self)
 
+        self.metainfo = metainfo
         self.name = metainfo['name']
         self.fancyname = metainfo['fancyname']
         self.description = metainfo.get('description')
@@ -140,6 +141,7 @@
                                 
         """
         
+        self.metainfo = metainfo
         self.parent = None
         # if there is a group, the product is the group
         # else the product is directly the library
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kapidox-5.76.0/src/kapidox/preprocessing.py 
new/kapidox-5.77.0/src/kapidox/preprocessing.py
--- old/kapidox-5.76.0/src/kapidox/preprocessing.py     2020-10-10 
17:35:59.000000000 +0200
+++ new/kapidox-5.77.0/src/kapidox/preprocessing.py     2020-12-03 
19:12:47.000000000 +0100
@@ -10,6 +10,7 @@
 import logging
 import os
 import sys
+from typing import Any, Dict, Optional
 
 from urllib.request import Request, urlopen
 from urllib.error import HTTPError
@@ -60,7 +61,7 @@
                 dct[platform] = note
 
 
-def create_metainfo(path):
+def create_metainfo(path) -> Optional[Dict[str,Any]]:
     """Look for a `metadata.yaml` file and create a dictionary out it.
 
     Args:
@@ -70,6 +71,8 @@
     did not fulfill some conditions.
     """
 
+    metainfo: Optional[Dict[str,Any]]
+
     if not os.path.isdir(path):
         return None
 
@@ -117,6 +120,11 @@
     else:
         repo_id = dirname
 
+    qdoc: bool = False
+
+    if 'qdoc' in metainfo:
+        qdoc = metainfo['qdoc']
+
     metainfo.update({
         'fancyname': fancyname,
         'name': dirname,
@@ -124,6 +132,7 @@
         'public_lib': metainfo.get('public_lib', False),
         'dependency_diagram': None,
         'path': path,
+        'qdoc': qdoc,
         })
 
     # replace legacy platform names
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/[email protected]

Reply via email to