parent
49086b6058
commit
1949e1eb2e
16
.github/workflows/dynamic.yml
vendored
16
.github/workflows/dynamic.yml
vendored
|
@ -34,4 +34,18 @@ jobs:
|
|||
run: |
|
||||
gem install bundler
|
||||
bundle install --jobs 4 --retry 3
|
||||
bundle exec rspec
|
||||
bundle exec rspec
|
||||
# hooks:
|
||||
# runs-on: ubuntu-latest
|
||||
|
||||
# steps:
|
||||
# - uses: actions/checkout@v2
|
||||
# - name: Set up Ruby 3.1
|
||||
# uses: actions/setup-ruby@v1
|
||||
# with:
|
||||
# ruby-version: 3.1.x
|
||||
# - name: Check all hooks for crashes and documentation
|
||||
# run: |
|
||||
# gem install bundler
|
||||
# bundle install --jobs 4 --retry 3
|
||||
# ./scripts/hooks.sh
|
|
@ -80,7 +80,7 @@ class TeeworldsClient
|
|||
@hooks[:rcon_line] = block
|
||||
end
|
||||
|
||||
def on_on_snapshot(&block)
|
||||
def on_snapshot(&block)
|
||||
@hooks[:snapshot] = block
|
||||
end
|
||||
|
||||
|
|
3
lib/version.rb
Normal file
3
lib/version.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
TEEWORLDS_NETWORK_VERSION = 'v0.0.1'
|
94
scripts/hooks.sh
Executable file
94
scripts/hooks.sh
Executable file
|
@ -0,0 +1,94 @@
|
|||
#!/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
|
||||
|
||||
function get_hooks() {
|
||||
local ruby_file="$1"
|
||||
grep -o "^[[:space:]]*def on_.*(&block)" "$ruby_file" | grep -o "on_[^(]*" | awk NF
|
||||
}
|
||||
|
||||
function check_file() {
|
||||
local ruby_class="$1"
|
||||
local ruby_file="$2"
|
||||
local hooks
|
||||
local hook
|
||||
local version
|
||||
local got_err=0
|
||||
version="$(grep TEEWORLDS_NETWORK_VERSION lib/version.rb | cut -d"'" -f2)"
|
||||
hooks="$(get_hooks "$ruby_file")"
|
||||
if [ "$version" == "" ]
|
||||
then
|
||||
echo "Error: failed to get library version"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# self testing the test
|
||||
# if the test finds no hooks the test is wrong not the code
|
||||
if [ "$(echo "$hooks" | wc -l)" -lt 8 ]
|
||||
then
|
||||
echo "Error: found only $(echo "$hooks" | wc -l) hooks in $ruby_file"
|
||||
echo " expected 8 or more"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for hook in $hooks
|
||||
do
|
||||
local hook_err=0
|
||||
echo -n "[*] checking hook: $hook"
|
||||
# check documentation
|
||||
local mdfile
|
||||
mdfile="docs/$version.md"
|
||||
if [ ! -f "$mdfile" ]
|
||||
then
|
||||
echo "Error: documentation not found $mdfile"
|
||||
exit 1
|
||||
fi
|
||||
if ! grep -q "#$hook" "$mdfile"
|
||||
then
|
||||
echo " ERROR: missing documentation in $mdfile"
|
||||
got_err=1
|
||||
hook_err=1
|
||||
else
|
||||
printf ' .'
|
||||
fi
|
||||
|
||||
# check calling it
|
||||
local tmpfile
|
||||
tmpfile="$tmpdir/hook.rb"
|
||||
{
|
||||
echo '# frozen_string_literal: true'
|
||||
echo ''
|
||||
echo "require_relative '../../$ruby_file'"
|
||||
echo "obj = $ruby_class.new"
|
||||
echo "obj.$hook { |_| _ }"
|
||||
} > "$tmpfile"
|
||||
if ! ruby "$tmpfile" &>/dev/null
|
||||
then
|
||||
echo " ERROR: calling the hook failed"
|
||||
ruby "$tmpfile"
|
||||
elif [ "$hook_err" == "0" ]
|
||||
then
|
||||
echo ". OK"
|
||||
fi
|
||||
done
|
||||
if [ "$got_err" == "0" ]
|
||||
then
|
||||
echo "[+] OK: all hooks okay."
|
||||
return 1
|
||||
else
|
||||
echo "[-] Error: some hooks have errors."
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
check_file TeeworldsClient lib/teeworlds_client.rb
|
||||
# check_file TeeworldsServer lib/teeworlds_server.rb
|
||||
|
Loading…
Reference in a new issue