From: Wolfgang Bangerth Date: Wed, 3 Feb 2021 20:54:27 +0000 (-0700) Subject: Ensure exactly one newline at the end of each file. X-Git-Tag: v9.3.0-rc1~503^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9fbb5b4de3410e82e9747cb031d7250c1e6b2beb;p=dealii.git Ensure exactly one newline at the end of each file. --- 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 +