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