4sports/bin/check-attract-mode.sh

94 lines
2.8 KiB
Bash
Raw Normal View History

2021-02-16 06:01:22 +00:00
#!/bin/bash
# run from project root directory
fatal_error() {
echo "$1" "$2"
exit 1
}
2022-08-23 02:04:55 +00:00
check_slideshow() {
2021-02-16 06:01:22 +00:00
[ -f "$1" ] ||
2022-08-23 02:04:55 +00:00
fatal_error "Can't find slideshow" "$1"
2021-02-16 06:01:22 +00:00
cat "$1" |
2022-08-23 02:04:55 +00:00
tr -d "\r" |
2021-02-16 06:01:22 +00:00
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" ] ||
2022-08-23 02:04:55 +00:00
fatal_error "Can't find screenshot" "$filename"
2021-02-16 06:01:22 +00:00
grep "^$gamename$" /tmp/games >/dev/null ||
2022-08-23 02:04:55 +00:00
fatal_error "Screenshot links to non-existent game" "$gamename"
2021-02-16 06:01:22 +00:00
done
}
2022-08-23 02:04:55 +00:00
# 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
2021-02-16 06:01:22 +00:00
cat res/GAMES.CONF |
2022-08-23 02:04:55 +00:00
tr -d "\r" |
2021-02-16 06:01:22 +00:00
grep -v "^#" |
grep -v "^\[" |
grep -v "^$" |
cut -d"," -f2 |
cut -d"=" -f1 > /tmp/games
2022-08-23 02:04:55 +00:00
# warn about unused self-running demos
grep '^\!to' src/demo/*.a | cut -d'/' -f5-|cut -d'#' -f1 |
2022-08-23 02:04:55 +00:00
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 ../..
2021-02-16 06:01:22 +00:00
cat res/ATTRACT.CONF |
2022-08-23 02:04:55 +00:00
tr -d "\r" |
2021-02-16 06:01:22 +00:00
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
2021-02-16 06:01:22 +00:00
elif [ "$module_type" = "1" ]; then
2022-08-23 02:04:55 +00:00
check_slideshow res/SS/"$module_name" res/TITLE.HGR/
2021-02-16 06:01:22 +00:00
elif [ "$module_type" = "2" ]; then
2022-08-23 02:04:55 +00:00
check_slideshow res/SS/"$module_name" res/ACTION.HGR/
2021-02-16 06:01:22 +00:00
elif [ "$module_type" = "3" ]; then
2022-08-23 02:04:55 +00:00
check_slideshow res/SS/"$module_name" res/TITLE.DHGR/
2021-02-16 06:01:22 +00:00
elif [ "$module_type" = "4" ]; then
2022-08-23 02:04:55 +00:00
check_slideshow res/SS/"$module_name" res/ACTION.DHGR/
2021-02-16 06:01:22 +00:00
elif [ "$module_type" = "5" ]; then
2022-08-23 02:04:55 +00:00
check_slideshow res/SS/"$module_name" res/ARTWORK.SHR/
2021-02-16 06:01:22 +00:00
elif [ "$module_type" = "6" ]; then
2022-08-23 02:04:55 +00:00
check_slideshow res/SS/"$module_name" res/ACTION.GR/
elif [ "$module_type" = "7" ]; then
check_slideshow res/SS/"$module_name" res/ACTION.DGR/
2021-02-16 06:01:22 +00:00
else
fatal_error "Unknown module type" $module_type
fi
done
#rm -f /tmp/games