summaryrefslogtreecommitdiffstats
path: root/security/nss/automation/taskcluster/scripts/run_clang_format.sh
diff options
context:
space:
mode:
Diffstat (limited to 'security/nss/automation/taskcluster/scripts/run_clang_format.sh')
-rwxr-xr-xsecurity/nss/automation/taskcluster/scripts/run_clang_format.sh63
1 files changed, 63 insertions, 0 deletions
diff --git a/security/nss/automation/taskcluster/scripts/run_clang_format.sh b/security/nss/automation/taskcluster/scripts/run_clang_format.sh
new file mode 100755
index 000000000..c4b60290f
--- /dev/null
+++ b/security/nss/automation/taskcluster/scripts/run_clang_format.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+
+set -v -e -x
+
+if [ $(id -u) -eq 0 ]; then
+ # Drop privileges by re-running this script.
+ exec su worker $0 "$@"
+fi
+
+# Apply clang-format on the provided folder and verify that this doesn't change any file.
+# If any file differs after formatting, the script eventually exits with 1.
+# Any differences between formatted and unformatted files is printed to stdout to give a hint what's wrong.
+
+# Includes a default set of directories.
+
+if [ $# -gt 0 ]; then
+ dirs=("$@")
+else
+ top=$(dirname $0)/../../..
+ dirs=( \
+ "$top/cmd" \
+ "$top/fuzz" \
+ "$top/lib/base" \
+ "$top/lib/certdb" \
+ "$top/lib/certhigh" \
+ "$top/lib/ckfw" \
+ "$top/lib/crmf" \
+ "$top/lib/cryptohi" \
+ "$top/lib/dbm" \
+ "$top/lib/dev" \
+ "$top/lib/freebl" \
+ "$top/lib/jar" \
+ "$top/lib/nss" \
+ "$top/lib/pk11wrap" \
+ "$top/lib/pkcs7" \
+ "$top/lib/pkcs12" \
+ "$top/lib/pki" \
+ "$top/lib/smime" \
+ "$top/lib/softoken" \
+ "$top/lib/ssl" \
+ "$top/lib/sysinit" \
+ "$top/lib/util" \
+ "$top/gtests/common" \
+ "$top/gtests/der_gtest" \
+ "$top/gtests/freebl_gtest" \
+ "$top/gtests/pk11_gtest" \
+ "$top/gtests/ssl_gtest" \
+ "$top/gtests/util_gtest" \
+ )
+fi
+
+for dir in "${dirs[@]}"; do
+ find "$dir" -type f \( -name '*.[ch]' -o -name '*.cc' \) -exec clang-format -i {} \+
+done
+
+TMPFILE=$(mktemp /tmp/$(basename $0).XXXXXX)
+trap 'rm $TMPFILE' exit
+if (cd $(dirname $0); hg root >/dev/null 2>&1); then
+ hg diff --git "$top" | tee $TMPFILE
+else
+ git -C "$top" diff | tee $TMPFILE
+fi
+[[ ! -s $TMPFILE ]]