xref: /illumos-gate/usr/src/tools/onbld/Checks/ShellLint.py (revision ddb365bfc9e868ad24ccdcb0dc91af18b10df082)
1#
2# This file and its contents are supplied under the terms of the
3# Common Development and Distribution License ("CDDL"), version 1.0.
4# You may only use this file in accordance with the terms of version
5# 1.0 of the CDDL.
6#
7# A full copy of the text of the CDDL should have accompanied this
8# source. A copy of the CDDL is also available via the Internet at
9# http://www.illumos.org/license/CDDL.
10#
11
12#
13# Copyright 2021 OmniOS Community Edition (OmniOSce) Association.
14#
15
16#
17# ShellLint, wrap the 'shcomp -n' tool in a python API
18#
19
20import sys
21from onbld.Checks.ProcessCheck import processcheck
22
23def lint(fh, filename=None, output=sys.stderr, **opts):
24	if not filename:
25		filename = fh.name
26
27	options = ['-n', '/dev/stdin', '/dev/null']
28
29	ret, tmpfile = processcheck('shcomp', options, fh, output)
30
31	if tmpfile:
32		for line in tmpfile:
33			if '`...` obsolete' in line:
34				continue
35			ret = 1
36
37			line = line.replace('/dev/stdin', filename)
38			line = line.replace('warning: ', '')
39			output.write(line)
40
41		tmpfile.close()
42	return ret
43