From d78faecbfabeb23467efda0d1946c116062bc761 Mon Sep 17 00:00:00 2001
From: Xavier Robin <xavier.robin@unibas.ch>
Date: Fri, 20 Dec 2019 14:30:58 +0100
Subject: [PATCH] Use sphinx.application.Sphinx instead of a main function.

---
 doc/make.py | 43 +++++++++++++++++++++++++++++--------------
 1 file changed, 29 insertions(+), 14 deletions(-)

diff --git a/doc/make.py b/doc/make.py
index 426ee6028..5d088e798 100644
--- a/doc/make.py
+++ b/doc/make.py
@@ -5,7 +5,7 @@ import shutil
 from ost import settings
 from optparse import OptionParser
 import subprocess
-import sphinx.cmd.build
+from sphinx.application import Sphinx
 
 if len(sys.argv)==2:
   root_dir=sys.argv[1]
@@ -76,29 +76,44 @@ def ParseArgs():
   parser.add_option("-q", "--quiet", action="store_true", default=False, dest="quiet", help="run all test")
   return parser.parse_args()
 
+def _SelectBuilders(opts):
+  builders = []
+  if opts.html:
+    builders.append('html')
+
+  if opts.doctest:
+    builders.append('doctest')
+
+  if opts.build_json:
+    builders.append('json')
+
+  if opts.linkcheck:
+    builders.append('linkcheck')
+  return builders
+
+
 opts, args=ParseArgs()
 if not opts.html and\
    not opts.linkcheck and\
    not opts.doctest:
      opts.html=True
 
-extra_opts=[]
+extra_args = {}
 if opts.quiet:
-  extra_opts=['-Q']
+  extra_args['warning'] = None
+  extra_args['status'] = None
 
 for sub_dir in ('modules',):
   for directory, dirnames, filenames in os.walk(sub_dir):
     _CollectRstDocs('doc/source', directory, filenames)
 
-if opts.html:
-  sphinx.cmd.build.main(extra_opts + ['-b', 'html', '-c', 'doc/conf', 'doc/source', 'doc/build/html'])
-
-if opts.doctest:
-  sphinx.cmd.build.main(extra_opts + ['-b', 'doctest', '-c', 'doc/conf', 'doc/source', 'doc/build/html'])
-
-if opts.build_json:
-  sphinx.cmd.build.main(extra_opts + ['-b', 'json', '-c', 'doc/conf', 'doc/source', 'doc/build/html'])
-
-if opts.linkcheck:
-  sphinx.cmd.build.main(extra_opts + ['-b', 'linkcheck', '-c', 'doc/conf', 'doc/source', 'doc/build/html'])
+builders = _SelectBuilders(opts)
 
+for builder in builders:
+  Sphinx(
+    srcdir='doc/source',
+    confdir='doc/conf',
+    outdir='doc/build/html',
+    doctreedir='doc/build/html/.doctrees',
+    buildername=builder,
+    **extra_args).build(True)
-- 
GitLab