summaryrefslogtreecommitdiff
path: root/misc/scripts/file_format.sh
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2021-07-09 19:43:04 +0200
committerGitHub <noreply@github.com>2021-07-09 19:43:04 +0200
commitc0b31562f51606fc1b1c662e99dffde1044a9583 (patch)
tree3157fbaec9bb148c64cb4fd3fa40bad6e8ad3864 /misc/scripts/file_format.sh
parenteeabf0a8446c41ce8b11c063ede07337ba7eabbb (diff)
parent69f92fa26c7bef3b042d8da5e520fe60b22e01b7 (diff)
downloadgodot-webrtc-native-c0b31562f51606fc1b1c662e99dffde1044a9583.tar.gz
godot-webrtc-native-c0b31562f51606fc1b1c662e99dffde1044a9583.tar.bz2
godot-webrtc-native-c0b31562f51606fc1b1c662e99dffde1044a9583.zip
Merge pull request #39 from Faless/style/clang_black
Add static checks
Diffstat (limited to 'misc/scripts/file_format.sh')
-rwxr-xr-xmisc/scripts/file_format.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/misc/scripts/file_format.sh b/misc/scripts/file_format.sh
new file mode 100755
index 0000000..e6e1fe2
--- /dev/null
+++ b/misc/scripts/file_format.sh
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+
+# This script ensures proper POSIX text file formatting and a few other things.
+# This is supplementary to clang_format.sh and black_format.sh, but should be
+# run before them.
+
+# We need dos2unix and recode.
+if [ ! -x "$(command -v dos2unix)" -o ! -x "$(command -v recode)" ]; then
+ printf "Install 'dos2unix' and 'recode' to use this script.\n"
+fi
+
+set -uo pipefail
+IFS=$'\n\t'
+
+# Loops through all text files tracked by Git.
+git grep -zIl '' |
+while IFS= read -rd '' f; do
+ # Exclude some types of files.
+ if [[ "$f" == "webrtc"* ]]; then
+ continue
+ elif [[ "$f" == "godot-cpp"* ]]; then
+ continue
+ fi
+ # Ensure that files are UTF-8 formatted.
+ recode UTF-8 "$f" 2> /dev/null
+ # Ensure that files have LF line endings and do not contain a BOM.
+ dos2unix "$f" 2> /dev/null
+ # Remove trailing space characters and ensures that files end
+ # with newline characters. -l option handles newlines conveniently.
+ perl -i -ple 's/\s*$//g' "$f"
+done
+
+git diff > patch.patch
+
+# If no patch has been generated all is OK, clean up, and exit.
+if [ ! -s patch.patch ] ; then
+ printf "Files in this commit comply with the formatting rules.\n"
+ rm -f patch.patch
+ exit 0
+fi
+
+# A patch has been created, notify the user, clean up, and exit.
+printf "\n*** The following differences were found between the code "
+printf "and the formatting rules:\n\n"
+cat patch.patch
+printf "\n*** Aborting, please fix your commit(s) with 'git commit --amend' or 'git rebase -i <hash>'\n"
+rm -f patch.patch
+exit 1