From 9fbb5b4de3410e82e9747cb031d7250c1e6b2beb Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Wed, 3 Feb 2021 13:54:27 -0700 Subject: [PATCH] Ensure exactly one newline at the end of each file. --- contrib/utilities/indent | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/contrib/utilities/indent b/contrib/utilities/indent index 039619b442..0da2355d68 100755 --- a/contrib/utilities/indent +++ b/contrib/utilities/indent @@ -75,3 +75,35 @@ process_changed "tests include source examples cmake/scripts contrib/python-bind process_changed "tests include source examples cmake/scripts contrib/python-bindings doc" \ ".*\.(cc|h|cu|cuh|html|dox|txt)" remove_trailing_whitespace + + +# +# Ensure only a single newline at end of files +# +ensure_single_trailing_newline() +{ + f=$1 + + # Remove newlines at end of file + # Check that the current line only contains newlines + # If it doesn't match, print it + # If it does match and we're not at the end of the file, + # append the next line to the current line and repeat the check + # If it does match and we're at the end of the file, + # remove the line. + sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba' $f >$f.tmpi + + # Then add a newline to the end of the file + # '$' denotes the end of file + # 'a\' appends the following text (which in this case is nothing) + # on a new line + sed -e '$a\' $f.tmpi >$f.tmp + + diff -q $f $f.tmp >/dev/null || mv $f.tmp $f + rm -f $f.tmp $f.tmpi +} +export -f ensure_single_trailing_newline + +process_changed "tests include source examples cmake/scripts contrib/python-bindings doc" \ + ".*\.(cc|h|cu|cuh|html|dox|txt)" ensure_single_trailing_newline + -- 2.39.5