#!/bin/bash
srcdir=${1:-.}
ret=0
get_supported_options()
{
awk '/START OPTION LIST/{flag=1;next}/END OPTION LIST/{flag=0}flag' "$srcdir/src/core/nm-config.c" |
grep -o 'NM_CONFIG_KEYFILE_KEY_\w*'
}
get_missing_options()
{
grep -v '/\* check-config-options skip \*/' "$srcdir/src/core/nm-config.h" |
grep -o 'NM_CONFIG_KEYFILE_KEY_\w*' |
grep -v -Fx -f <(get_supported_options)
}
get_src_con_defaults()
{
sed -n 's/\<NM_CON_DEFAULT/\n\0/gp' $(find "$srcdir/src/core/" -name \*.c ! -name test\*.c) |
sed -n 's/.*\<NM_CON_DEFAULT\(_NOP\)\?\s*("\([^"]*\)").*/\2/p'
}
get_man_con_defaults()
{
awk '/start connection defaults/{flag=1;next}/end connection defaults/{flag=0}flag' "$srcdir/man/NetworkManager.conf.xml" |
sed -ne 's#.*<varname>\([^<]*\)</varname>.*#\1#p'
}
get_missing_con_defaults()
{
get_src_con_defaults | grep -v -Fx -f <(get_man_con_defaults)
}
get_missing_con_defaults2()
{
get_man_con_defaults | grep -v -Fx -f <(get_src_con_defaults)
}
missing=$(get_missing_options)
if [ -n "$missing" ]; then
echo "***"
echo "*** Error: the following configuration options are defined but not present in the list of supported options"
echo "***"
echo "$missing"
echo
ret=1
fi
missing_con_defaults=$(get_missing_con_defaults)
if [ -n "$missing_con_defaults" ]; then
echo "***"
echo "*** Error: the following connection defaults are present in source files but not in the NetworkManager.conf man page:"
echo "***"
echo "$missing_con_defaults"
echo
ret=1
fi
missing_con_defaults2=$(get_missing_con_defaults2)
if [ -n "$missing_con_defaults2" ]; then
echo "***"
echo "*** Error: the following connection defaults are present in the NetworkManager.conf man page but not in source files:"
echo "***"
echo "$missing_con_defaults2"
echo
ret=1
fi
exit $ret