95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# CDDL HEADER START
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# The contents of this file are subject to the terms of the
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# Common Development and Distribution License (the "License").
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# You may not use this file except in compliance with the License.
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# or http://www.opensolaris.org/os/licensing.
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# See the License for the specific language governing permissions
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# and limitations under the License.
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# When distributing Covered Code, include this CDDL HEADER in each
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# If applicable, add the following below this CDDL HEADER, with the
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# fields enclosed by brackets "[]" replaced with your own identifying
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# information: Portions Copyright [yyyy] [name of copyright owner]
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# CDDL HEADER END
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# Use is subject to license terms.
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# Copyright 2014 Garrett D'Amore <garrett@damore.org>
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore# ManLint, wrap the mandoc lint tool in a pythonic API
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore#
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amoreimport sys
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amorefrom onbld.Checks.ProcessCheck import processcheck
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amoredef manlint(fh, filename=None, output=sys.stderr, **opts):
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore opttrans = { 'picky': None }
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore for x in filter(lambda x: x not in opttrans, opts):
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore raise TypeError('mandoc() got an unexpected keyword '
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore 'argument %s' % x)
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore options = [opttrans[x] for x in opts if opts[x] and opttrans[x]]
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore options.append('-Tlint')
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore if not filename:
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore filename = fh.name
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore ret, tmpfile = processcheck('mandoc', options, fh, output)
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore if tmpfile:
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore for line in tmpfile:
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore line = line.replace('<stdin>', filename)
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore output.write(line)
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore tmpfile.close()
95c635efb7c3b86efc493e0447eaec7aecca3f0fGarrett D'Amore return ret