#!/bin/bash # Copyright 2014, 2016 Luke Shumaker . # Copyright 2015 Márcio Alexandre Silva Delgado . # # This is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # This software is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this manual; if not, see # . . libremessages mydir="$(dirname "$0")" PATH="$mydir:$PATH" check-yaml() { file=$1 msg 'Inspecting %q' "$file" norm=$(mktemp --tmpdir) trap "rm -f -- $(printf '%q' "$norm")" RETURN meta-normalize-stdio < "$file" > "$norm" || return $? colordiff -u "$file" "$norm" || return $? } main() { declare -i ret=0 yamldir="$(ruby -e "load '$mydir/common.rb'; print cfg['yamldir']")" # Check the user YAML files for file in "$yamldir"/*.yml; do check-yaml "$file" || ret=$? done msg 'Checking for duplicate usernames' dups=($(sed -n 's/^username: //p' -- "$yamldir"/*.yml| sort | uniq -d)) if (( ${#dups[@]} )); then error 'Duplicate usernames:' plain '%s' "${dups[@]}" ret=1 fi msg 'Checking PGP keys' if pgp-list-keyids | grep -Ev '^(trusted|secondary|revoked)/[a-z][a-z0-9-]* [0-9A-F]{40}$'; then error 'Bad pgp keys ^^^' ret=1 fi return $ret } main "$@"