Print this page
5025 import and use mandoc
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
Reviewed by: Igor Kozhukhov <ikozhukhov@gmail.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Albert Lee <trisk@nexenta.com>
Approved by: TBD
@@ -14,10 +14,11 @@
#
#
# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
# Copyright 2008, 2011 Richard Lowe
+# Copyright 2014 Garrett D'Amore <garrett@damore.org>
#
'''OpenSolaris extensions to Mercurial
This extension contains a number of commands to help you work with
@@ -102,11 +103,11 @@
from mercurial import cmdutil, ignore, node, patch
from onbld.Scm.WorkSpace import WorkSpace, WorkList
from onbld.Scm.Backup import CdmBackup
from onbld.Checks import Cddl, Comments, Copyright, CStyle, HdrChk
-from onbld.Checks import JStyle, Keywords, Mapfile
+from onbld.Checks import JStyle, Keywords, ManLint, Mapfile
def yes_no(ui, msg, default):
if default:
prompt = ' [Y/n]:'
@@ -388,10 +389,44 @@
ret |= Cddl.cddlchk(fh, lenient=lenient, output=ui)
fh.close()
return ret
+def cdm_manlintchk(ui, repo, *args, **opts):
+ '''check for mandoc lint
+
+ Check for man page formatting errors.
+
+ Files can be excluded from this check using the manlint.NOT
+ file. See NOT Files in the extension documentation ('hg help
+ cdm').
+ '''
+
+ filelist = buildfilelist(wslist[repo], opts.get('parent'), args)
+ exclude = not_check(repo, 'manlint')
+ ret = 0
+
+ # Man pages are identified as having a suffix starting with a digit.
+ ManfileRE = re.compile(r'.*\.[0-9][a-z]*$', re.IGNORECASE)
+
+ ui.write('Man format check:\n')
+
+ for f, e in filelist:
+ if e and e.is_removed():
+ continue
+ elif (not ManfileRE.match(f)):
+ continue
+ elif (e or opts.get('honour_nots')) and exclude(f):
+ ui.status('Skipping %s...\n' % f)
+ continue
+
+ fh = open(f, 'r')
+ ret |= ManLint.manlint(fh, output=ui, picky=True)
+ fh.close()
+ return ret
+
+
def cdm_mapfilechk(ui, repo, *args, **opts):
'''check for a valid mapfile header block in active files
Check that all link-editor mapfiles contain the standard mapfile
header comment directing the reader to the document containing
@@ -792,10 +827,11 @@
- copyright (copyright statements)
- cstyle (C source style)
- hdrchk (C header style)
- jstyle (java source style)
+ - manlint (man page formatting)
- mapfilechk (link-editor mapfiles)
- permchk (file permissions)
- keywords (SCCS keywords)
With the global -q/--quiet option, only provide output for those
@@ -804,10 +840,11 @@
cmds = [cdm_copyright,
cdm_cstyle,
cdm_hdrchk,
cdm_jstyle,
+ cmd_manlintchk,
cdm_mapfilechk,
cdm_permchk,
cdm_keywords]
return run_checks(wslist[repo], cmds, *args, **opts)
@@ -826,10 +863,11 @@
- copyright (copyright statements)
- cstyle (C source style)
- hdrchk (C header style)
- jstyle (java source style)
- keywords (SCCS keywords)
+ - manlint (man page formatting)
- mapfilechk (link-editor mapfiles)
- permchk (file permissions)
- tagchk (addition/modification of tags)
Additionally, the workspace is checked for outgoing merges (which
@@ -846,10 +884,11 @@
#
cmds = [cdm_copyright,
cdm_cstyle,
cdm_hdrchk,
cdm_jstyle,
+ cdm_manlintchk,
cdm_mapfilechk,
cdm_permchk,
cdm_keywords,
cdm_comchk,
cdm_tagchk,
@@ -1429,10 +1468,12 @@
'^list|active': (cdm_list, [('p', 'parent', '', 'parent workspace'),
('a', 'added', None, 'show added files'),
('m', 'modified', None, 'show modified files'),
('r', 'removed', None, 'show removed files')],
'hg list [-amrRu] [-p PARENT]'),
+ 'manlint': (cdm_manlintchk, [('p', 'parent', '', 'parent workspace')],
+ 'hg manlint [-p PARENT]'),
'mapfilechk': (cdm_mapfilechk, [('p', 'parent', '', 'parent workspace')],
'hg mapfilechk [-p PARENT]'),
'^nits': (cdm_nits, [('p', 'parent', '', 'parent workspace')],
'hg nits [-p PARENT]'),
'^pbchk': (cdm_pbchk, [('p', 'parent', '', 'parent workspace'),