diff --git a/doc/sphinxext/contributors.py b/doc/sphinxext/contributors.py index 0f04d47435699..8c9fa5bc961d1 100644 --- a/doc/sphinxext/contributors.py +++ b/doc/sphinxext/contributors.py @@ -10,6 +10,7 @@ """ from docutils import nodes from docutils.parsers.rst import Directive +import git from announce import build_components @@ -19,17 +20,25 @@ class ContributorsDirective(Directive): name = 'contributors' def run(self): - components = build_components(self.arguments[0]) - - message = nodes.paragraph() - message += nodes.Text(components['author_message']) - - listnode = nodes.bullet_list() - - for author in components['authors']: - para = nodes.paragraph() - para += nodes.Text(author) - listnode += nodes.list_item('', para) + range_ = self.arguments[0] + try: + components = build_components(range_) + except git.GitCommandError: + return [ + self.state.document.reporter.warning( + "Cannot find contributors for range '{}'".format(range_), + line=self.lineno) + ] + else: + message = nodes.paragraph() + message += nodes.Text(components['author_message']) + + listnode = nodes.bullet_list() + + for author in components['authors']: + para = nodes.paragraph() + para += nodes.Text(author) + listnode += nodes.list_item('', para) return [message, listnode]