Thibault Saunier 3fe0127a64 scripts: git-hooks: ci: Add GES children properties documentation check
Add a pre-commit hook that automatically checks if GES children properties
documentation is up to date when GES source files are modified. The hook
runs the document-children-props.py script and warns if the generated
documentation files have changes that need to be committed.

This ensures that children properties documentation stays synchronized
with code changes and prevents outdated documentation from being merged.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5987>
2025-08-05 12:48:38 +00:00

67 lines
2.2 KiB
Bash
Executable File

#! /bin/bash
builddir="$1"
if [[ -z "$builddir" ]]; then
echo "Usage: build-docs.sh <build_directory>"
exit 1
fi
set -eux
source "ci/scripts/source_image_env.sh"
# Special doc mode for V4L2 stateless codecs
export GST_V4L2_CODEC_GEN_DOC=1
meson_args="${MESON_ARGS:--Ddoc=enabled -Drs=enabled -Dgst-docs:fatal_warnings=true}"
echo "$meson_args"
meson setup "$builddir" $meson_args
ccache --show-stats
ninja -C "$builddir" update_girs
# Ignore modifications to wrap files made by meson
git checkout $(git ls-files 'subprojects/*.wrap')
./ci/scripts/check-diff.py "gir files"
./gst-env.py --builddir "$builddir" ninja -C "$builddir" plugins_doc_caches
# Ignore modifications to wrap files made by meson
git checkout $(git ls-files 'subprojects/*.wrap')
./ci/scripts/check-diff.py
ninja -C "$builddir" subprojects/gst-docs/sitemap.txt
export GI_TYPELIB_PATH=$PWD/girs
hotdoc run --conf-file "$builddir"/subprojects/gst-docs/GStreamer-doc.json
mv "$builddir/subprojects/gst-docs/GStreamer-doc/html" documentation/
# Check GES children properties documentation is up to date
echo "Checking GES children properties documentation..."
# Force building python extension modules to ensure the _gi_gst python module is built
ninja -C "$builddir" gst-python@@gst-python-extensions
./gst-env.py --builddir "$builddir" python3 subprojects/gst-editing-services/docs/libs/document-children-props.py
# Check if there are any changes in the markdown files
if ! git diff --ignore-submodules --exit-code subprojects/gst-editing-services/docs/libs/*-children-props.md; then
echo "ERROR: GES children properties documentation is out of date!"
# Create diff for download
diffsdir='diffs'
mkdir -p "$diffsdir"
diffname="$diffsdir/ges_children_properties_documentation.diff"
git diff --ignore-submodules subprojects/gst-editing-services/docs/libs/*-children-props.md > "$diffname"
echo ""
echo "You can download and apply the changes with:"
echo " \$ curl -L \${CI_ARTIFACTS_URL}/$diffname | git apply -"
echo ""
echo "(note that it might take a few minutes for artifacts to be available on the server)"
exit 1
fi
echo "GES children properties documentation is up to date"
pip3 install bs4
python3 subprojects/gst-docs/scripts/rust_doc_unifier.py documentation/