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