Blame tools/check-docs.sh

Packit Service b23acc
#!/bin/bash
Packit Service b23acc
Packit Service b23acc
set -e
Packit Service b23acc
Packit Service b23acc
export LANG=C
Packit Service b23acc
Packit Service b23acc
die() {
Packit Service b23acc
    printf '%s\n' "$@" >&2
Packit Service b23acc
    exit 1
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
word_regex() {
Packit Service b23acc
    tr '\n|<>\\' ' ' \
Packit Service b23acc
    | sed -e 's, *$,\\>,' \
Packit Service b23acc
          -e 's,^ *,\\<,' \
Packit Service b23acc
          -e 's, \+,\\>\\|\\<,g'
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
same_lines() {
Packit Service b23acc
    diff <(printf "%s\n" "$1" | sed '/^$/d' | sort) \
Packit Service b23acc
         <(printf "%s\n" "$2" | sed '/^$/d' | sort) >&2
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
libnm_headers() {
Packit Service b23acc
    (
Packit Service b23acc
        ls -1 "$1/libnm"/*.h "$1/libnm-core"/*.h | \
Packit Service b23acc
        if [ -n "$2" ]; then
Packit Service b23acc
            grep -v -F "$1/libnm-core/nm-core-enum-types.h" | \
Packit Service b23acc
            grep -v -F "$1/libnm/nm-enum-types.h"
Packit Service b23acc
        else
Packit Service b23acc
            cat
Packit Service b23acc
        fi
Packit Service b23acc
        if [ -n "$2" ]; then
Packit Service b23acc
            ls -1 "$2/libnm"/*.h "$2/libnm-core"/*.h
Packit Service b23acc
        fi
Packit Service b23acc
    ) | sort | uniq
Packit Service b23acc
}
Packit Service b23acc
Packit Service b23acc
Packit Service b23acc
SOURCEDIR="$1"
Packit Service b23acc
BUILDDIR="$2"
Packit Service b23acc
if test "$SOURCEDIR" == "$BUILDDIR"; then
Packit Service b23acc
    BUILDDIR=
Packit Service b23acc
fi
Packit Service b23acc
[ -z "$SOURCEDIR" ] && SOURCEDIR='.'
Packit Service b23acc
Packit Service b23acc
Packit Service b23acc
# Check that the D-Bus API docs contain all known interfaces
Packit Service b23acc
F1="$(sed -n 's,^      <xi:include href="dbus-\([^"]*\.xml\)"/>$,\1,p' "$SOURCEDIR/docs/api/network-manager-docs.xml")"
Packit Service b23acc
F1_EXTRA="
Packit Service b23acc
org.freedesktop.NetworkManager.Device.WiMax.xml
Packit Service b23acc
org.freedesktop.NetworkManager.WiMax.Nsp.xml
Packit Service b23acc
"
Packit Service b23acc
F2="$(cd "$SOURCEDIR/introspection"; ls -1 *.xml)"
Packit Service b23acc
if ! same_lines "$F1"$'\n'"$F1_EXTRA" "$F2" ; then
Packit Service b23acc
    die "*** Error: D-Bus interfaces not included in docs/api/network-manager-docs.xml ***"
Packit Service b23acc
fi
Packit Service b23acc
Packit Service b23acc
Packit Service b23acc
# Check that files that define types that are in public libnm API are included in libnm documentation.
Packit Service b23acc
F1="$(sed -n 's/.*
Packit Service b23acc
F1_EXTRA="
Packit Service b23acc
nm-core-enum-types
Packit Service b23acc
nm-enum-types
Packit Service b23acc
"
Packit Service b23acc
F2="$(grep -l "$(sed -n 's/^[\t ]*\(.*_get_type\);/\1/p' "$SOURCEDIR/libnm/libnm.ver" | word_regex)" \
Packit Service b23acc
           $(libnm_headers "$SOURCEDIR" "$BUILDDIR") \
Packit Service b23acc
      | sed 's,.*/\([^/]\+\)\.h$,\1,')"
Packit Service b23acc
F2_EXTRA="
Packit Service b23acc
annotation-glossary
Packit Service b23acc
api-index-full
Packit Service b23acc
nm-dbus-interface
Packit Service b23acc
nm-errors
Packit Service b23acc
nm-utils
Packit Service b23acc
nm-version
Packit Service b23acc
"
Packit Service b23acc
if ! same_lines "$F1"$'\n'"$F1_EXTRA" "$F2"$'\n'"$F2_EXTRA"; then
Packit Service b23acc
    die "*** Error: libnm classes not included in docs/libnm/libnm-docs.xml ***"
Packit Service b23acc
fi