diff tasks/task_generate_doc.py @ 7:b5fc67c97c50

tasks: updated tasks following changes in Libervia
author Goffi <goffi@goffi.org>
date Tue, 26 May 2020 12:38:56 +0200
parents 9ce41ef66dfa
children a24d362796be
line wrap: on
line diff
--- a/tasks/task_generate_doc.py	Sat Oct 05 01:26:51 2019 +0200
+++ b/tasks/task_generate_doc.py	Tue May 26 12:38:56 2020 +0200
@@ -1,61 +1,57 @@
 #!/ur/bin/env python3
 
 import os.path
-from twisted.internet import defer
 from sat.core.i18n import _
 from sat.core.log import getLogger
 from sat.tools.common import regex
-log = getLogger(__name__)
-
-WATCH_DIRS = []
-DOC_DIRS_DEFAULT = ('doc', 'docs')
+from libervia.server.tasks import task
 
 
-def prepare(self):
-    to_watch = set()
-    doc_path = self.getConfig("doc_path")
-    if doc_path is not None:
-        to_watch.add(doc_path)
-    sub_docs = self.getConfig("sub_docs_dict", value_type="path")
-    if sub_docs is not None:
-        for d in list(sub_docs.values()):
-            to_watch.add(d)
-    global WATCH_DIRS
-    WATCH_DIRS = list(to_watch)
+log = getLogger(__name__)
 
 
-@defer.inlineCallbacks
-def start(self):
-    # root documentation
-    doc_path = self.getConfig("doc_path")
-    # sub docs will be generated before the root documentation
-    sub_docs = self.getConfig("sub_docs_dict", value_type="path")
+class Task(task.Task):
+    DOC_DIRS_DEFAULT = ('doc', 'docs')
 
-    if doc_path is None:
-        # we check if there is documentation inside the site
-        for dirname in DOC_DIRS_DEFAULT:
-            path = os.path.join(self.site_path, dirname)
-            conf_file = os.path.join(path, 'conf.py')
-            if os.path.isdir(path) and os.path.exists(conf_file):
-                doc_path = path
-                break
+    def prepare(self):
+        to_watch = set()
+        # root documentation
+        self.doc_path = self.getConfig("doc_path")
+        if self.doc_path is not None:
+            to_watch.add(self.doc_path)
+        # sub docs will be generated before the root documentation
+        self.sub_docs = self.getConfig("sub_docs_dict", value_type="path")
+        if self.sub_docs is not None:
+            for d in list(self.sub_docs.values()):
+                to_watch.add(d)
+        self.WATCH_DIRS = list(to_watch)
 
-    if doc_path is None and sub_docs is None:
-        log.info("No documentation found for {site_name}, skipping".format(
-            site_name = self.site_name))
-        return
+    async def start(self):
+        if self.doc_path is None:
+            # we check if there is documentation inside the site
+            for dirname in self.DOC_DIRS_DEFAULT:
+                path = os.path.join(self.site_path, dirname)
+                conf_file = os.path.join(path, 'conf.py')
+                if os.path.isdir(path) and os.path.exists(conf_file):
+                    self.doc_path = path
+                    break
 
-    sphinx = self.findCommand('sphinx-build')
+        if self.doc_path is None and self.sub_docs is None:
+            log.info("No documentation found for {site_name}, skipping".format(
+                site_name = self.site_name))
+            return
 
-    # we first generate the sub documentations
-    for name, sub_doc_path in list(sub_docs.items()):
-        sub_dir = regex.pathEscape(name or '')
-        build_path = os.path.join(self.build_path, 'doc', sub_dir)
-        yield self.runCommand(sphinx, sub_doc_path, build_path)
+        sphinx = self.findCommand('sphinx-build')
 
-    # then the root one
-    if doc_path is not None:
-        build_path = os.path.join(self.build_path, 'doc')
-        yield self.runCommand(sphinx, doc_path, build_path)
+        # we first generate the sub documentations
+        for name, sub_doc_path in list(self.sub_docs.items()):
+            sub_dir = regex.pathEscape(name or '')
+            build_path = os.path.join(self.build_path, 'doc', sub_dir)
+            await self.runCommand(sphinx, sub_doc_path, build_path)
 
-    log.info(_("documentation has been generated"))
+        # then the root one
+        if self.doc_path is not None:
+            build_path = os.path.join(self.build_path, 'doc')
+            await self.runCommand(sphinx, self.doc_path, build_path)
+
+        log.info(_("documentation has been generated"))