summaryrefslogtreecommitdiff
path: root/sphinx/setup_command.py
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2016-08-17 23:51:00 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2016-09-12 19:59:47 +0900
commitca5ad2d541b5a265ad59ab329980be6510f2787e (patch)
tree25a9519ed338496831a5d06e622db72dcb035994 /sphinx/setup_command.py
parentfae9eb778446c44df0f0ad4173542f3cb97dccc1 (diff)
downloadsphinx-git-ca5ad2d541b5a265ad59ab329980be6510f2787e.tar.gz
#2695: better error handling for setup_command
Diffstat (limited to 'sphinx/setup_command.py')
-rw-r--r--sphinx/setup_command.py28
1 files changed, 9 insertions, 19 deletions
diff --git a/sphinx/setup_command.py b/sphinx/setup_command.py
index 7df8bd6e8..0b2abb77c 100644
--- a/sphinx/setup_command.py
+++ b/sphinx/setup_command.py
@@ -15,15 +15,14 @@ from __future__ import print_function
import sys
import os
-import traceback
+from six import StringIO, string_types
from distutils.cmd import Command
from distutils.errors import DistutilsOptionError, DistutilsExecError
-from six import StringIO, string_types
-
from sphinx.application import Sphinx
-from sphinx.util.console import darkred, nocolor, color_terminal
+from sphinx.cmdline import handle_exception
+from sphinx.util.console import nocolor, color_terminal
from sphinx.util.osutil import abspath
@@ -99,6 +98,8 @@ class BuildDoc(Command):
self.config_dir = None
self.link_index = False
self.copyright = ''
+ self.verbosity = 0
+ self.traceback = False
def _guess_source_dir(self):
for guess in ('doc', 'docs'):
@@ -173,21 +174,10 @@ class BuildDoc(Command):
if app.statuscode:
raise DistutilsExecError(
'caused by %s builder.' % app.builder.name)
- except Exception as err:
- if self.pdb:
- import pdb
- print(darkred('Exception occurred while building, starting debugger:'),
- file=sys.stderr)
- traceback.print_exc()
- pdb.post_mortem(sys.exc_info()[2])
- else:
- from docutils.utils import SystemMessage
- if isinstance(err, SystemMessage):
- print(darkred('reST markup error:'), file=sys.stderr)
- print(err.args[0].encode('ascii', 'backslashreplace'),
- file=sys.stderr)
- else:
- raise
+ except Exception as exc:
+ handle_exception(app, self, exc, sys.stderr)
+ if not self.pdb:
+ raise SystemExit(1)
if self.link_index:
src = app.config.master_doc + app.builder.out_suffix