4cade/bin/check-attract-mode.sh
2024-04-22 21:58:09 -04:00

94 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
# run from project root directory
fatal_error() {
echo "$1" "$2"
exit 1
}
check_slideshow() {
[ -f "$1" ] ||
fatal_error "Can't find slideshow" "$1"
cat "$1" |
tr -d "\r" |
grep -v "^#" |
grep -v "^\[" |
grep -v "^$" |
while read ssline; do
IFS="=" read -r filename gamename <<< "$ssline"
if [ -z "$gamename" ]; then
gamename=$filename
fi
[ -f "$2"/"$filename" ] ||
fatal_error "Can't find screenshot" "$filename"
grep "^$gamename$" /tmp/games >/dev/null ||
fatal_error "Screenshot links to non-existent game" "$gamename"
done
}
# fatal error if an attract mode module is listed more than once
dupes=$(cat res/ATTRACT.CONF |
tr -d "\r" |
grep -v "^#" |
grep -v "^$" |
sort |
uniq -d)
if [[ $dupes ]]; then
fatal_error "Duplicate ATTRACT.CONF module:" "$dupes"
fi
cat res/GAMES.CONF |
tr -d "\r" |
grep -v "^#" |
grep -v "^\[" |
grep -v "^$" |
cut -d"," -f2 |
cut -d"=" -f1 > /tmp/games
# warn about unused self-running demos
grep '^\!to' src/demo/*.a | cut -d'/' -f5-|cut -d'#' -f1 |
grep -v "SPCARTOON" |
while read f; do
grep "^$f=0" res/ATTRACT.CONF >/dev/null || echo "unused demo: $f";
done
# warn about unused slideshows
cd res/SS
for f in *.CONF; do
grep "^$f=" ../ATTRACT.CONF >/dev/null || echo "unused slideshow: $f";
done
cd ../..
cat res/ATTRACT.CONF |
tr -d "\r" |
grep "=" |
grep -v "^#" |
while read line; do
IFS="=" read -r module_name module_type <<< "$line"
# echo "$module_name" "$module_type"
if [ "$module_type" = "0" ]; then
[ "${module_name%???}" = "SPCARTOON" ] && continue
demo=$(grep 'to.*'"$module_name" src/demo/*.a)
[ -n "$demo" ] || fatal_error "Can't find demo" $module_name
elif [ "$module_type" = "1" ]; then
check_slideshow res/SS/"$module_name" res/TITLE.HGR/
elif [ "$module_type" = "2" ]; then
check_slideshow res/SS/"$module_name" res/ACTION.HGR/
elif [ "$module_type" = "3" ]; then
check_slideshow res/SS/"$module_name" res/TITLE.DHGR/
elif [ "$module_type" = "4" ]; then
check_slideshow res/SS/"$module_name" res/ACTION.DHGR/
elif [ "$module_type" = "5" ]; then
check_slideshow res/SS/"$module_name" res/ARTWORK.SHR/
elif [ "$module_type" = "6" ]; then
check_slideshow res/SS/"$module_name" res/ACTION.GR/
elif [ "$module_type" = "7" ]; then
check_slideshow res/SS/"$module_name" res/ACTION.DGR/
else
fatal_error "Unknown module type" $module_type
fi
done
#rm -f /tmp/games