#!/bin/sh
# This file is part of the coreboot project.
#
# Copyright 2015 Google Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# DESCR: Checkpatch on .c, .h, & Kconfig files in the tree

LC_ALL=C export LC_ALL

# GNU BRE syntax list of files to examine
INCLUDED_FILES='.*\.[ch]\|Kconfig.*$'

EXCLUDED_DIRS="^payloads/libpayload/util/kconfig\|\
^payloads/libpayload/curses/PDCurses\|\
^util/kconfig\|\
^src/vendorcode\|\
^Documentation"

# Space separated list of directories to test
if [ "$1" = "" ]; then
	INCLUDED_DIRS="src util"
else
	INCLUDED_DIRS="$1"
fi

# We want word splitting here, so disable the shellcheck warnings
# shellcheck disable=SC2046,SC2086
FILELIST=$( git ls-files $INCLUDED_DIRS | \
		grep $INCLUDED_FILES | \
		grep -v $EXCLUDED_DIRS )

for FILE in $FILELIST; do
	util/lint/checkpatch.pl --show-types --file --quiet "$FILE"
done
