Skip to content

Commit

Permalink
Check hooks index in CI
Browse files Browse the repository at this point in the history
  • Loading branch information
ChillerDragon committed Sep 17, 2023
1 parent 87a3a6e commit 9b0b991
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 1 deletion.
10 changes: 9 additions & 1 deletion .github/workflows/dynamic.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,12 @@ jobs:
run: |
gem install bundler
bundle install --jobs 4 --retry 3
./scripts/hooks.sh
./scripts/hooks.sh
doc-index:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Check doc index up to date
run: |
./scripts/update_docs_index.sh
78 changes: 78 additions & 0 deletions scripts/update_docs_index.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#!/bin/bash

if [ ! -d spec ]
then
echo "Error: spec folder not found"
echo " run this script from the root of repo"
exit 1
fi

tmpdir=scripts/tmp
mkdir -p scripts/tmp

arg_generate_docs=0

for arg in "$@"
do
if [ "$arg" == "--fix" ] || [ "$arg" == "--generate-docs" ]
then
arg_generate_docs=1
else
echo "usage: ./scripts/update_docs_index.sh [--fix]"
exit 1
fi
done

function print_hooks() {
local version="$1"
local hook
local hook_slug
while read -r hook
do
hook_slug="${hook%%(*}"
echo ""
echo "[#$hook](classes/TeeworldsClient.md#$hook_slug)"
done < <(grep '###' "docs/$version/classes/TeeworldsClient.md" | cut -d'#' -f5)
}

function gen_doc_index() {
local version="$1"
local index_file="docs/$version/README.md"
if [ ! -f "$index_file" ]
then
echo "Error: missing index file $index_file"
exit 1
fi
local tmpfile="$tmpdir/README.md"
{
awk '1;/TeeworldsClient/{exit}' "$index_file"
print_hooks "$version"
} > "$tmpfile"
if [ "$arg_generate_docs" == "1" ]
then
mv "$tmpfile" "$index_file"
return
fi
local diff="$(diff "$tmpfile" "$index_file")"
if [ "$diff" != "" ]
then
echo "Error: documentation index is not up to date"
echo " to fix this run ./scripts/update_docs_index.sh --fix"
echo ""
echo "$diff"
exit 1
fi
}

function main() {
local version
version="$(grep TEEWORLDS_NETWORK_VERSION lib/version.rb | cut -d"'" -f2)"
if [ "$version" == "" ]
then
echo "Error: failed to get library version"
exit 1
fi
gen_doc_index "$version"
}

main

0 comments on commit 9b0b991

Please sign in to comment.