Skip to content

Commit

Permalink
ci: add a check for the cryptol book pdf
Browse files Browse the repository at this point in the history
  • Loading branch information
marsella committed Sep 19, 2024
1 parent 6702622 commit 4c2f325
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
40 changes: 40 additions & 0 deletions .github/check_book_update.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/env bash
#
# Indicates whether the Programming Cryptol book PDF needs to be updated.
#

TEX_CHANGED=0
PDF_CHANGED=0

# Examine the set of changed files to see if either the book source code
# or the book PDF were changed.
for fname in $@ ; do
case $fname in
docs/ProgrammingCryptol/*)
TEX_CHANGED=1
TEX_FILES="$TEX_FILES$fname " ;;
docs/ProgrammingCryptol.pdf)
PDF_CHANGED=1 ;;
esac
done

if (($TEX_CHANGED)) && ((! $PDF_CHANGED)); then
echo -e "Changed files: $TEX_FILES"
echo "The Programming Cryptol source code changed, but the PDF was"
echo "not updated. Please rebuild the book to incorporate your changes"
echo "and copy the file to 'docs/ProgrammingCryptol.pdf'."
exit 1
elif (($TEX_CHANGED)) && (($PDF_CHANGED)); then
echo "Thanks for updating the PDF along with your changed source code!"
echo "This CI job doesn't check that you incorporated all the source"
echo "changes into the PDF; please confirm that it's properly updated"
echo "before merging."
exit 0
elif ((! $TEX_CHANGED)) && (($PDF_CHANGED)); then
echo "The Programming Cryptol PDF changed but there was no corresponding"
echo "change to the source code."
exit 1
else
echo "There were no changes to the book. No action needed."
exit 0
fi
23 changes: 23 additions & 0 deletions .github/workflows/book.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#
# Checks that the PDF version of the Programming Cryptol book was updated
# if any of its consitituent files were changed.
#

name: Programming Cryptol PDF Update
on: [pull_request]


jobs:
update_needed:
runs-on: ubuntu-latest
steps:
- id: checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: "Check if update to local PDF is needed"
run: |
changed_files=$(git diff --name-only --diff-filter ACDMRT ${{ github.event.pull_request.base.sha }} ${{ github.sha }})
# This will fail if any files have spaces in the names.
bash .github/check_book_update.sh $changed_files

0 comments on commit 4c2f325

Please sign in to comment.