зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1780087 - [docs] Implement a 'searchfox' role, r=firefox-source-docs-reviewers,sylvestre
See the docstring in this patch for usage examples. Differential Revision: https://phabricator.services.mozilla.com/D152124
This commit is contained in:
Родитель
3835f734ac
Коммит
816f3eeaca
|
@ -2,12 +2,12 @@
|
||||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
from __future__ import absolute_import, print_function
|
|
||||||
|
|
||||||
import importlib
|
import importlib
|
||||||
|
|
||||||
|
from docutils import nodes
|
||||||
from docutils.parsers.rst import Directive
|
from docutils.parsers.rst import Directive
|
||||||
from sphinx.util.docstrings import prepare_docstring
|
from sphinx.util.docstrings import prepare_docstring
|
||||||
|
from sphinx.util.docutils import ReferenceRole
|
||||||
|
|
||||||
|
|
||||||
def function_reference(f, attr, args, doc):
|
def function_reference(f, attr, args, doc):
|
||||||
|
@ -195,10 +195,52 @@ class MozbuildSymbols(Directive):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
class Searchfox(ReferenceRole):
|
||||||
|
"""Role which links a relative path from the source to it's searchfox URL.
|
||||||
|
|
||||||
|
Can be used like:
|
||||||
|
|
||||||
|
See :searchfox:`browser/base/content/browser-places.js` for more details.
|
||||||
|
|
||||||
|
Will generate a link to
|
||||||
|
``https://searchfox.org/mozilla-central/source/browser/base/content/browser-places.js``
|
||||||
|
|
||||||
|
The example above will use the path as the text, to use custom text:
|
||||||
|
|
||||||
|
See :searchfox:`this file <browser/base/content/browser-places.js>` for
|
||||||
|
more details.
|
||||||
|
|
||||||
|
To specify a different source tree:
|
||||||
|
|
||||||
|
See :searchfox:`mozilla-beta:browser/base/content/browser-places.js`
|
||||||
|
for more details.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
base = "https://searchfox.org/{source}/source/{path}"
|
||||||
|
|
||||||
|
if ":" in self.target:
|
||||||
|
source, path = self.target.split(":", 1)
|
||||||
|
else:
|
||||||
|
source = "mozilla-central"
|
||||||
|
path = self.target
|
||||||
|
|
||||||
|
url = base.format(source=source, path=path)
|
||||||
|
|
||||||
|
if self.has_explicit_title:
|
||||||
|
title = self.title
|
||||||
|
else:
|
||||||
|
title = path
|
||||||
|
|
||||||
|
node = nodes.reference(self.rawtext, title, refuri=url, **self.options)
|
||||||
|
return [node], []
|
||||||
|
|
||||||
|
|
||||||
def setup(app):
|
def setup(app):
|
||||||
from moztreedocs import manager
|
from moztreedocs import manager
|
||||||
|
|
||||||
app.add_directive("mozbuildsymbols", MozbuildSymbols)
|
app.add_directive("mozbuildsymbols", MozbuildSymbols)
|
||||||
|
app.add_role("searchfox", Searchfox())
|
||||||
|
|
||||||
# Unlike typical Sphinx installs, our documentation is assembled from
|
# Unlike typical Sphinx installs, our documentation is assembled from
|
||||||
# many sources and staged in a common location. This arguably isn't a best
|
# many sources and staged in a common location. This arguably isn't a best
|
||||||
|
|
|
@ -81,10 +81,13 @@ def lint(files, config, **lintargs):
|
||||||
paths = list(paths)
|
paths = list(paths)
|
||||||
chunk_size = 50
|
chunk_size = 50
|
||||||
binary = get_rstcheck_binary()
|
binary = get_rstcheck_binary()
|
||||||
rstcheck_options = "--ignore-language=cpp,json"
|
rstcheck_options = [
|
||||||
|
"--ignore-language=cpp,json",
|
||||||
|
"--ignore-roles=searchfox",
|
||||||
|
]
|
||||||
|
|
||||||
while paths:
|
while paths:
|
||||||
cmdargs = [which("python"), binary, rstcheck_options] + paths[:chunk_size]
|
cmdargs = [which("python"), binary] + rstcheck_options + paths[:chunk_size]
|
||||||
log.debug("Command: {}".format(" ".join(cmdargs)))
|
log.debug("Command: {}".format(" ".join(cmdargs)))
|
||||||
|
|
||||||
proc = subprocess.Popen(
|
proc = subprocess.Popen(
|
||||||
|
|
Загрузка…
Ссылка в новой задаче