Blame tools/check-docs.sh

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