#!/usr/bin/env sh
#
# SPDX-License-Identifier: GPL-2.0-only

# DESCR: Check that files end with a single newline

LINTDIR="$(
  cd -- "$(dirname "$0")" > /dev/null 2>&1 || return
  pwd -P
)"

# shellcheck source=helper_functions.sh
. "${LINTDIR}/helper_functions.sh"

PIDS=""
INCLUDED_DIRS_AND_FILES='util/* src/* payloads/* configs/* Makefile *.inc'
EXCLUDED_DIRS='src/vendorcode/\|cbfstool/lzma/\|cbfstool/lz4/\|Documentation/\|build/\|3rdparty/\|\.git/\|coreboot-builds/\|util/nvidia/cbootimage/\|^util/goswid/vendor'
EXCLUDED_FILES='\.gif$\|\.jpg$\|\.cksum$\|\.bin$\|\.vbt$\|\.hex$\|\.ico$\|\.o$\|\.bz2$\|\.xz$\|^.tmpconfig\|\.pyc$\|_shipped$\|sha256$\|\.png$\|\.patch$\|\.apcb$'

HAVE_FILE=$(command -v file 1>/dev/null 2>&1; echo $?)

is_eligible_executable() {
	if [ "$HAVE_FILE" -ne 0 ]; then
		return 1
	fi
	if { LC_ALL=C; file --brief "$filename" | grep -Eqw \
		"^(Bourne shell|POSIX shell|Perl|Python) script"; };
	then
		return 0
	else
		return 1
	fi
}

test_for_final_newline() {
	while read filename; do
		# Only check regular files and script executables
		if [ -f "$filename" ] && { [ ! -x "$filename" ] || \
			is_eligible_executable "$filename"; };
		then
			# Verify that there is a newline at the end
			# $() strips trailing newlines
			if [ -n "$(tail -c 1 "$filename")" ]; then
				echo "$filename has no final newline."

			# Verify that the file ends with only a single newline
			# and that the file isn't empty
			elif [ -z "$(tail -c 2 "$filename")" ] && \
			     [ -n "$(head -n 5 "$filename")" ]; then
				echo "$filename has multiple final newlines."
			fi
		fi
	done
}

for directory in $INCLUDED_DIRS_AND_FILES ; do
	${FIND_FILES} "${directory}" | sed 's|^\./||' | sort | \
		grep -v "$EXCLUDED_DIRS" | \
		grep -v "$EXCLUDED_FILES" | \
		test_for_final_newline &
	PIDS="$PIDS $!"
done

# wait for tests to finish.
for pid in $PIDS; do
	wait "$pid"
done
