--- a/doc/check-seclevel.py Sat Oct 05 10:29:34 2019 -0400
+++ b/doc/check-seclevel.py Sun Oct 06 09:45:02 2019 -0400
@@ -11,7 +11,9 @@
# import from the live mercurial repo
os.environ['HGMODULEPOLICY'] = 'py'
sys.path.insert(0, "..")
-from mercurial import demandimport; demandimport.enable()
+from mercurial import demandimport
+
+demandimport.enable()
from mercurial import (
commands,
extensions,
@@ -36,13 +38,16 @@
initlevel_ext = 1
initlevel_ext_cmd = 3
+
def showavailables(ui, initlevel):
- avail = (' available marks and order of them in this help: %s\n') % (
- ', '.join(['%r' % (m * 4) for m in level2mark[initlevel + 1:]]))
+ avail = ' available marks and order of them in this help: %s\n' % (
+ ', '.join(['%r' % (m * 4) for m in level2mark[initlevel + 1 :]])
+ )
ui.warn(avail.encode('utf-8'))
+
def checkseclevel(ui, doc, name, initlevel):
- ui.note(('checking "%s"\n') % name)
+ ui.note('checking "%s"\n' % name)
if not isinstance(doc, bytes):
doc = doc.encode('utf-8')
blocks, pruned = minirst.parse(doc, 0, ['verbose'])
@@ -54,66 +59,77 @@
mark = block[b'underline']
title = block[b'lines'][0]
if (mark not in mark2level) or (mark2level[mark] <= initlevel):
- ui.warn((('invalid section mark %r for "%s" of %s\n') %
- (mark * 4, title, name)).encode('utf-8'))
+ ui.warn(
+ (
+ 'invalid section mark %r for "%s" of %s\n'
+ % (mark * 4, title, name)
+ ).encode('utf-8')
+ )
showavailables(ui, initlevel)
errorcnt += 1
continue
nextlevel = mark2level[mark]
if curlevel < nextlevel and curlevel + 1 != nextlevel:
- ui.warn(('gap of section level at "%s" of %s\n') %
- (title, name))
+ ui.warn('gap of section level at "%s" of %s\n' % (title, name))
showavailables(ui, initlevel)
errorcnt += 1
continue
- ui.note(('appropriate section level for "%s %s"\n') %
- (mark * (nextlevel * 2), title))
+ ui.note(
+ 'appropriate section level for "%s %s"\n'
+ % (mark * (nextlevel * 2), title)
+ )
curlevel = nextlevel
return errorcnt
+
def checkcmdtable(ui, cmdtable, namefmt, initlevel):
errorcnt = 0
for k, entry in cmdtable.items():
name = k.split(b"|")[0].lstrip(b"^")
if not entry[0].__doc__:
- ui.note(('skip checking %s: no help document\n') %
- (namefmt % name))
+ ui.note('skip checking %s: no help document\n' % (namefmt % name))
continue
- errorcnt += checkseclevel(ui, entry[0].__doc__,
- namefmt % name,
- initlevel)
+ errorcnt += checkseclevel(
+ ui, entry[0].__doc__, namefmt % name, initlevel
+ )
return errorcnt
+
def checkhghelps(ui):
errorcnt = 0
for h in helptable:
names, sec, doc = h[0:3]
if callable(doc):
doc = doc(ui)
- errorcnt += checkseclevel(ui, doc,
- '%s help topic' % names[0],
- initlevel_topic)
+ errorcnt += checkseclevel(
+ ui, doc, '%s help topic' % names[0], initlevel_topic
+ )
errorcnt += checkcmdtable(ui, table, '%s command', initlevel_cmd)
- for name in sorted(list(extensions.enabled()) +
- list(extensions.disabled())):
+ for name in sorted(
+ list(extensions.enabled()) + list(extensions.disabled())
+ ):
mod = extensions.load(ui, name, None)
if not mod.__doc__:
- ui.note(('skip checking %s extension: no help document\n') % name)
+ ui.note('skip checking %s extension: no help document\n' % name)
continue
- errorcnt += checkseclevel(ui, mod.__doc__,
- '%s extension' % name,
- initlevel_ext)
+ errorcnt += checkseclevel(
+ ui, mod.__doc__, '%s extension' % name, initlevel_ext
+ )
cmdtable = getattr(mod, 'cmdtable', None)
if cmdtable:
- errorcnt += checkcmdtable(ui, cmdtable,
- '%%s command of %s extension' % name,
- initlevel_ext_cmd)
+ errorcnt += checkcmdtable(
+ ui,
+ cmdtable,
+ '%%s command of %s extension' % name,
+ initlevel_ext_cmd,
+ )
return errorcnt
+
def checkfile(ui, filename, initlevel):
if filename == '-':
filename = 'stdin'
@@ -122,43 +138,76 @@
with open(filename) as fp:
doc = fp.read()
- ui.note(('checking input from %s with initlevel %d\n') %
- (filename, initlevel))
+ ui.note(
+ 'checking input from %s with initlevel %d\n' % (filename, initlevel)
+ )
return checkseclevel(ui, doc, 'input from %s' % filename, initlevel)
+
def main():
- optparser = optparse.OptionParser("""%prog [options]
+ optparser = optparse.OptionParser(
+ """%prog [options]
This checks all help documents of Mercurial (topics, commands,
extensions and commands of them), if no file is specified by --file
option.
-""")
- optparser.add_option("-v", "--verbose",
- help="enable additional output",
- action="store_true")
- optparser.add_option("-d", "--debug",
- help="debug mode",
- action="store_true")
- optparser.add_option("-f", "--file",
- help="filename to read in (or '-' for stdin)",
- action="store", default="")
+"""
+ )
+ optparser.add_option(
+ "-v", "--verbose", help="enable additional output", action="store_true"
+ )
+ optparser.add_option(
+ "-d", "--debug", help="debug mode", action="store_true"
+ )
+ optparser.add_option(
+ "-f",
+ "--file",
+ help="filename to read in (or '-' for stdin)",
+ action="store",
+ default="",
+ )
- optparser.add_option("-t", "--topic",
- help="parse file as help topic",
- action="store_const", dest="initlevel", const=0)
- optparser.add_option("-c", "--command",
- help="parse file as help of core command",
- action="store_const", dest="initlevel", const=1)
- optparser.add_option("-e", "--extension",
- help="parse file as help of extension",
- action="store_const", dest="initlevel", const=1)
- optparser.add_option("-C", "--extension-command",
- help="parse file as help of extension command",
- action="store_const", dest="initlevel", const=3)
+ optparser.add_option(
+ "-t",
+ "--topic",
+ help="parse file as help topic",
+ action="store_const",
+ dest="initlevel",
+ const=0,
+ )
+ optparser.add_option(
+ "-c",
+ "--command",
+ help="parse file as help of core command",
+ action="store_const",
+ dest="initlevel",
+ const=1,
+ )
+ optparser.add_option(
+ "-e",
+ "--extension",
+ help="parse file as help of extension",
+ action="store_const",
+ dest="initlevel",
+ const=1,
+ )
+ optparser.add_option(
+ "-C",
+ "--extension-command",
+ help="parse file as help of extension command",
+ action="store_const",
+ dest="initlevel",
+ const=3,
+ )
- optparser.add_option("-l", "--initlevel",
- help="set initial section level manually",
- action="store", type="int", default=0)
+ optparser.add_option(
+ "-l",
+ "--initlevel",
+ help="set initial section level manually",
+ action="store",
+ type="int",
+ default=0,
+ )
(options, args) = optparser.parse_args()
@@ -173,5 +222,6 @@
if checkhghelps(ui):
sys.exit(1)
+
if __name__ == "__main__":
main()