From 55e1edd51ba6880f791f0b34edbdf51dd722a525 Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Tue, 26 Oct 2021 22:41:31 +0200 Subject: [PATCH] Meta: Check auto-generated manpages for completeness on CI --- .github/workflows/cmake.yml | 14 ++++++++++++++ Meta/export-argsparser-manpages.sh | 29 +++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 0dcec325cb..c8f8714f68 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -207,3 +207,17 @@ jobs: if: ${{ !cancelled() && matrix.debug-options == 'NORMAL_DEBUG'}} working-directory: ${{ github.workspace }}/Build/${{ matrix.arch }} run: '[ ! -e debug.log ] || cat debug.log' + + - name: Check manpages for completeness + if: ${{ matrix.debug-options == 'NORMAL_DEBUG' && matrix.arch == 'i686'}} + working-directory: ${{ github.workspace }}/Build/${{ matrix.arch }} + env: + # The script already sets the correct SERENITY_RUN and SERENITY_KERNEL_CMDLINE envvars. + SERENITY_ARCH: ${{ matrix.arch }} + SERENITY_QEMU_CPU: "max,vmx=off" + run: | + # Running the tests apparently leaves the image sufficiently broken + rm _disk_image + ninja image + /usr/bin/time ../../Meta/export-argsparser-manpages.sh --verify-git-state + timeout-minutes: 10 diff --git a/Meta/export-argsparser-manpages.sh b/Meta/export-argsparser-manpages.sh index 64b462c831..e1f11f17ed 100755 --- a/Meta/export-argsparser-manpages.sh +++ b/Meta/export-argsparser-manpages.sh @@ -10,6 +10,20 @@ if ! command -v tar >/dev/null 2>&1 ; then exit 1 fi +if [ "$#" = "0" ]; then + VERIFY_GIT_STATE=n +elif [ "$#" = "1" ] && [ "$1" = "--verify-git-state" ]; then + VERIFY_GIT_STATE=y +else + echo "USAGE: $0 [--verify-git-state]" + echo "This script runs Serenity and exports a set of manpages through ArgsParser," + echo "and places them in Base/usr/share/man/." + echo "If --verify-git-state is given, this script verifies that this does not modify" + echo "the git state, i.e. that all exported manpages already were in the repository" + echo "with the exact same content." + exit 1 +fi + echo "This script assumes passwordless sudo." sudo true @@ -49,3 +63,18 @@ sudo umount fsmount rmdir fsmount echo "Successfully (re-)generated manpages in Base/usr/share/man/" + +if [ "$VERIFY_GIT_STATE" = "y" ]; then + echo "Verifying git state ..." + if [ "" != "$(git clean -n Base/usr/share/man)" ] || ! git diff --quiet Base/usr/share/man; then + echo "Failed: There are missing and/or outdated manpages." + echo "$ git status Base/usr/share/man" + git status Base/usr/share/man + echo "$ git diff Base/usr/share/man" + git diff Base/usr/share/man + echo "You may need to run ./Meta/export-argsparser-manpages.sh on your system and commit/squash the resulting changes." + exit 1 + else + echo "Verified: No missing or outdated manpages. Great!" + fi +fi