project-config/tools/check_valid_gerrit_config.sh
Andreas Jaeger 7114e79485 Check ACLs for all namespaces
Remove hardcoded list of namespaces with iterating over all directories
in the check of valid ACLs.

Remove parameter, we don't need to pass it in.

Be more verbose and report directories scanned and number of ACL files
read.

Change-Id: I4193ac59b431d31f3ce835c93950745e5b742418
2019-05-31 21:53:03 +02:00

47 lines
1.1 KiB
Bash
Executable File

#!/bin/bash -e
# It checks that *.config files respect certain gerrit ACL rules
export TMPDIR=$(/bin/mktemp -d)
trap "rm -rf $TMPDIR" EXIT
pushd $TMPDIR
CONFIGS_LIST_BASE=$OLDPWD/gerrit/acls
declare -i NUM_TESTS=0
function check_team_acl {
local configs_dir="$1"
local configs_list
echo "Checking" $(basename $configs_dir)
configs_list=$(find $configs_dir -name "*.config")
for config in $configs_list; do
let "NUM_TESTS+=1"
$OLDPWD/tools/normalize_acl.py $config all > $TMPDIR/normalized
if ! diff -u $config $TMPDIR/normalized >>config_failures;
then
echo "Project $config is not normalized!" >>config_failures
fi
done
}
# Add more namespaces here, if necessary
for namespace in $CONFIGS_LIST_BASE/*; do
if [ -d $namespace ] ; then
check_team_acl "${namespace}"
fi
done
num_errors=$(cat config_failures | grep "is not normalized" | wc -l)
if [ $num_errors -ne 0 ]; then
echo -e; cat config_failures
echo -e "There are $num_errors projects not normalized."
exit 1
fi
echo "Gerrit ACL configs are valid!"
echo "Checked $NUM_TESTS ACL files"
popd