From b1ff8a3ab60e2cc27a05173267ce151a113bfb15 Mon Sep 17 00:00:00 2001 From: Jim Huang Date: Tue, 20 Feb 2024 03:51:04 +0800 Subject: [PATCH] Enforce newline at end of files Reference: https://medium.com/@alexey.inkin/how-to-force-newline-at-end-of-files-and-why-you-should-do-it-fdf76d1d090e --- .ci/check-newline.sh | 19 +++++++++++++++++++ .github/workflows/main.yml | 3 ++- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100755 .ci/check-newline.sh diff --git a/.ci/check-newline.sh b/.ci/check-newline.sh new file mode 100755 index 000000000..2e23cb583 --- /dev/null +++ b/.ci/check-newline.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -e -u -o pipefail + +ret=0 +show=0 +# Reference: https://medium.com/@alexey.inkin/how-to-force-newline-at-end-of-files-and-why-you-should-do-it-fdf76d1d090e +while IFS= read -rd '' f; do + if file --mime-encoding "$f" | grep -qv binary; then + tail -c1 < "$f" | read -r _ || show=1 + if [ $show -eq 1 ]; then + echo "Warning: No newline at end of file $f" + ret=1 + show=0 + fi + fi +done < <(git ls-files -z src tests/arch-test-target) + +exit $ret diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4a0fe4132..a3a2e1a17 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,5 +37,6 @@ jobs: - name: coding convention run: | sudo apt-get install -q -y clang-format-14 - sh .ci/check-format.sh + .ci/check-newline.sh + .ci/check-format.sh shell: bash