#!/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/crossgcc/patches\|\
^util/inteltool\|\
^util/kconfig\|\
^util/superiotool\|\
^src/vendorcode\|\
^Documentation"

opts="--max-line-length 96"

# default: test src and util
if [ "$1" = "" ]; then
	INCLUDED_DIRS="src util"
# special mode: take diff from stdin, but exclude the dirs
elif [ "$1" = "diff" ]; then
	args=$( echo $EXCLUDED_DIRS | \
		sed -e 's,\\|, ,g' -e 's,\^,--exclude=,g' )
	util/lint/checkpatch.pl --quiet --no-signoff $opts $args -
	exit $?
# Space separated list of directories to test
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 $opts "$FILE"
done
