summaryrefslogtreecommitdiff
path: root/sphinx/setup_command.py
diff options
context:
space:
mode:
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