rust-update: make `update_from_null` respect `worker.numcpu` config option
This was overlooked in the original series.
This is important for tests (because we run many at once), and for the
occasional end user that wants to keep their CPU usage in check.
A future series should clean up this `worker` parameter tunelling business by
rewriting the config in Rust, but doing so on stable would be a very bad
idea.
#!/usr/bin/env python3
#
# runrst - register custom roles and run correct writer
#
# Copyright 2010 Olivia Mackall <olivia@selenic.com> and others
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
"""usage: %s WRITER args...
where WRITER is the name of a Docutils writer such as 'html' or 'manpage'
"""
import re
import sys
try:
import docutils.core as core
import docutils.nodes as nodes
import docutils.utils as utils
import docutils.parsers.rst.roles as roles
except ImportError:
sys.stderr.write(
"abort: couldn't generate documentation: docutils "
"module is missing\n"
)
sys.stderr.write(
"please install python-docutils or see "
"http://docutils.sourceforge.net/\n"
)
sys.exit(-1)
# Whether we are rendering a help page for a single topic.
# If false, we are rendering a monolithic page with all topics together.
is_individual_pages_mode = False
def make_cmd_ref_uri(cmd):
if is_individual_pages_mode:
return "hg-%s.html" % cmd
else:
return "hg.1.html#%s" % cmd
known_refs = None
def load_known_refs(fname):
try:
with open(fname, 'r') as fp:
text = fp.read()
return re.split(r'[ \n]+', text)
except OSError:
sys.stderr.write(
"abort: couldn't find '%', please run documentation generation "
"through the Makefile, or run 'make knownrefs'\n"
)
sys.exit(-1)
def find_known_ref(ref):
global known_refs
if known_refs is None:
cmds = load_known_refs('commandlist.txt')
topics = load_known_refs('topiclist.txt')
exts = load_known_refs('extensionlist.txt')
known_refs = {'hg': cmds, 'topic': topics, 'ext': exts}
for reftype, refnames in known_refs.items():
if ref in refnames:
return reftype
return None
def make_any_ref_uri(ref):
if is_individual_pages_mode:
# Try to find if ref is a command, topic, or extension. If not,
# reference the anchor in the main hg.1 help page.
reftype = find_known_ref(ref)
if reftype:
return '%s-%s.html' % (reftype, ref)
return "hg.1.html#%s" % ref
def role_hg(name, rawtext, text, lineno, inliner, options=None, content=None):
text = "hg " + utils.unescape(text)
linktext = nodes.literal(rawtext, text)
parts = text.split()
cmd, args = parts[1], parts[2:]
refuri = make_cmd_ref_uri(cmd)
if cmd == 'help' and args:
if args[0] == 'config':
# :hg:`help config`
refuri = "hgrc.5.html"
elif args[0].startswith('config.'):
# :hg:`help config.SECTION...`
refuri = "hgrc.5.html#%s" % args[0].split('.', 2)[1]
elif len(args) >= 2 and args[0] == '-c':
# :hg:`help -c COMMAND ...` is equivalent to :hg:`COMMAND`
# (mainly for :hg:`help -c config`)
refuri = make_cmd_ref_uri(args[1])
else:
refuri = make_any_ref_uri(args[0])
node = nodes.reference(rawtext, '', linktext, refuri=refuri)
return [node], []
roles.register_local_role("hg", role_hg)
if __name__ == "__main__":
if len(sys.argv) < 2:
sys.stderr.write(__doc__ % sys.argv[0])
sys.exit(1)
writer = sys.argv[1]
del sys.argv[1]
if sys.argv[1] == '--hg-individual-pages':
is_individual_pages_mode = True
del sys.argv[1]
core.publish_cmdline(writer_name=writer)