apparmor/tests/bin/shellcheck-tree

39 lines
1.1 KiB
Text
Raw Normal View History

#!/usr/bin/python3
import glob
import re
import subprocess
import sys
from pathlib import Path
def is_excluded(f):
return (re.match(
# skip test scripts and the rc.apparmor.slackware initscript
2022-08-07 17:06:08 -04:00
r"^([.]git/|parser/tst/|tests/|utils/test/|parser/rc[.]apparmor[.]slackware)"
+ "|"
# skip several files generated during libapparmor build
2022-08-07 17:06:08 -04:00
+ r"^libraries/libapparmor/(compile|config[.]guess|config[.]status|config[.]sub|configure|depcomp|install-sh|libtool|ltmain[.]sh|missing|test-driver|ylwrap|testsuite/test_multi[.]multi)",
f,
) or Path(f).is_dir())
def mimetype(f):
return subprocess.run(['file', '--brief', '--mime-type', f],
stdout=subprocess.PIPE,
universal_newlines=True,
check=True).stdout.rstrip()
def is_shell_script(f):
return mimetype(f) == "text/x-shellscript"
shell_scripts = [
f for f in glob.glob("**/*", recursive=True)
if not is_excluded(f) and is_shell_script(f)
]
sys.exit(
subprocess.run(['shellcheck'] + sys.argv[1:] + shell_scripts).returncode)