Check hooks index in CI
This commit is contained in:
parent
87a3a6e8d2
commit
9b0b991af9
10
.github/workflows/dynamic.yml
vendored
10
.github/workflows/dynamic.yml
vendored
|
@ -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
scripts/update_docs_index.sh
Executable file
78
scripts/update_docs_index.sh
Executable file
|
@ -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
|
Loading…
Reference in a new issue