summaryrefslogtreecommitdiff
path: root/bin/check-format
diff options
context:
space:
mode:
Diffstat (limited to 'bin/check-format')
-rwxr-xr-xbin/check-format38
1 files changed, 38 insertions, 0 deletions
diff --git a/bin/check-format b/bin/check-format
new file mode 100755
index 0000000..06b880a
--- /dev/null
+++ b/bin/check-format
@@ -0,0 +1,38 @@
+#!/bin/bash
+cfg_hackers="hackers.yml"
+
+######################################################################
+
+. libremessages
+
+file=$cfg_hackers
+ret=0
+
+norm=$(mktemp --tmpdir)
+trap "rm -f -- $(printf '%q' "$norm")" EXIT
+"$(dirname "$0")/normalize-stdio" < "$file" > "$norm" || exit 1
+
+usernames=($(<"$norm" sed -n 's/^[ -] username: //p' | sort))
+
+dups=($(printf '%s\n' "${usernames[@]}" | uniq -d))
+if (( ${#dups[@]} )); then
+ error 'Duplicate usernames:'
+ plain '%s' "${dups[@]}"
+ ret=1
+fi
+
+illegal=($(printf '%s\n' "${usernames[@]}" | grep -v '^[a-z][a-z0-9]*$'))
+if (( ${#illegal[@]} )); then
+ error 'Illegal usernames:'
+ plain '%s' "${illegal[@]}"
+ ret=1
+fi
+
+if "$(dirname "$0")/list-pgp-keyids" | grep -Ev '^(trusted|secondary|revoked)/[a-z][a-z0-9]* [0-9A-F]{40}$'; then
+ error 'Bad pgp keys ^^^'
+ ret=1
+fi
+
+colordiff -u "$file" "$norm" || ret=$?
+
+exit $ret