btrfs-progs: ci: build html manual page previews if source changed

Similar to the manual page on terminal preview, also do the html output
that will be on the RTD page. Due to the way how it's displayed in the
CI action summary the CSS is missing and there are some visual
artifacts, e.g. in the option lists or special characters.

Issue: #824
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
David Sterba 2024-07-03 02:59:54 +02:00
parent ef8e050d64
commit fb9c0feec8
2 changed files with 52 additions and 1 deletions

View File

@ -28,7 +28,17 @@ jobs:
run: ./autogen.sh && CC=${{ matrix.compiler }} ./configure
- name: Documentation
run: make V=1 -C Documentation
- name: Generate manual pages preview
- name: Generate manual pages preview (html)
if: ${{ matrix.compiler == 'gcc' }}
env:
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
run: |
for file in ${ALL_CHANGED_FILES}; do
echo "$file was changed, generate preview to summary"
Documentation/html-preview.sh "$file" >> $GITHUB_STEP_SUMMARY
done
- run: echo '<hr>' >> $GITHUB_STEP_SUMMARY
- name: Generate manual pages preview (man)
if: ${{ matrix.compiler == 'gcc' }}
env:
ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}

41
Documentation/html-preview.sh Executable file
View File

@ -0,0 +1,41 @@
#!/bin/sh
# Generate manual page preview as rendered by 'make html', removed some styling
# so there can be visual artifacts, usable for CI summary
if ! [ -f "$1" ]; then
exit 0
fi
prefix=Documentation/
here=$(pwd)
if [ "$(basename \"$here\")" = 'Documentation' ]; then
prefix=
fi
fn="$1"
bn=$(basename "$fn" .rst)
html=$(find "${prefix}"_build/html -name "$bn".'html')
if ! [ -f "$html" ]; then
#echo "ERROR: cannot find html page '$html' from bn $bn fn $fn <br/>"
exit 0
fi
cat << EOF
<details>
<summary>$fn</summary>
EOF
# Up to <div itemprop="articleBody">, before that there's left bar navigation
cat "$html" | sed -e 's/^\s\+//' | awk '
/^<div itemprop=.articleBody.>/ { doit=1; next; }
/^<\/body>/ { doit=0; next; }
doit==1 { print; }'
cat << EOF
</details>
EOF