rewolf/install_from_cd.sh

119 lines
3.2 KiB
Bash
Raw Normal View History

#!/bin/sh
# I mean... this sucks, I get it - but sadly we have to use Wine for this
# because no one has made an installer extractor for Wine that works on
# Linux. Sorry.
# builds a pk3 file that's alphabetically sorted
mk_pk3()
{
tree -fi > ./build_contents.txt
sed -i '/build_contents/d' ./build_contents.txt
sed -i '/directories,/d' ./build_contents.txt
zip -0 "$1".pk3 -@ < ./build_contents.txt
rm ./build_contents.txt
mv "$1".pk3 ../"$1".pk3
}
SCRPATH="$( cd "$( dirname $(readlink -nf $0) )" && pwd )"
OUTPK3DIR="pak0_retail.pk3dir"
if ! [ -x "$(command -v wine)" ]; then
printf "Error: wine is not installed.\n" >&2
exit 1
fi
if ! [ $# -gt 0 ]; then
printf "Path to MOUNTED CD-ROM folder, e.g. /mnt/cdrom:\n"
read CDROM_PATH
else
CDROM_PATH="$1"
fi
if ! [ -f "$CDROM_PATH"/rewolf/install.EXE ]; then
printf "Error: install.EXE not found in $CDROM_PATH.\n" >&2
exit 1
fi
# Set up a prefix that's 32-bit inside
export WINEPREFIX="${SCRPATH}/prefix"
export WINEARCH=win32
DATA_PATH="${WINEPREFIX}/drive_c/Sierra/Gunman/"
# No pak0 present
if ! [ -f "$SCRPATH/pak0_cd.pk3" ]; then
# Check if we need to install the content, or throw a warning.
if ! [ -f "$SCRPATH/$OUTPK3DIR/liblist.gam" ]; then
# May already have been extracted here (debug)
if ! [ -f "$DATA_PATH"/gunman.exe ]; then
# Because /x does NOT preserve directories.
wine "$CDROM_PATH"/rewolf/install.EXE /s
fi
# Move rewolf to become OUTPK3DIR
mv "$DATA_PATH/rewolf" "$SCRPATH/$OUTPK3DIR"
# Logos need to be in the game-dir
mv "$DATA_PATH/logos" "$SCRPATH/$OUTPK3DIR/logos"
else
printf "$OUTPK3DIR already exists... everything okay?\n"
fi
# Make the pk3 archive
cd "$SCRPATH/$OUTPK3DIR"
mk_pk3 pak0_cd
fi
# Make sure we're back in here
cd "$SCRPATH"
# check if we need an icon.tga
if ! [ -f "$SCRPATH/icon.tga" ]; then
# imagemagick will help us get our icon
if [ -x "$(command -v convert)" ]; then
printf "Detected ImageMagick's convert... giving you a nice icon!\n"
convert "$DATA_PATH/rewolf.ico" "$SCRPATH/rewolf.tga"
rm "$SCRPATH/rewolf-0.tga"
mv "$SCRPATH/rewolf-1.tga" "$SCRPATH/icon.tga"
else
printf "No ImageMagick found... can't give you a window icon then.\n"
fi
fi
# Make sure we're back in here
cd "$SCRPATH"
printf "All done. Would you like to rip the the Compact Disc Digital Audio for music?\ny/n: "
read CHOICE
if [[ "$CHOICE" == [Yy]* ]]; then
# check if we require rippin tunes
if ! [ -f "$SCRPATH/music/track02.wav" ]; then
if [ -x "$(command -v cdparanoia)" ]; then
mkdir -p "./music"
cd "./music"
cdparanoia -B
rename ".cdda." "." *.wav
# I'd offer FLAC, but that also requires the ffmpeg plugin
if [ -x "$(command -v oggenc)" ]; then
printf "All done. Would you like to convert them to OGG for playback compatibility\nas well as space preservation (frees up ~150 MB)?\ny/n: "
read CHOICE
if [[ "$CHOICE" == [Yy]* ]]; then
oggenc *.wav
rm *.wav
fi
fi
else
printf "cdparanoia is missing. Cannot rip music.\nPlease run the installer again once you've got it installed.\n"
fi
else
printf "Music was already present.\n"
fi
fi
cd "$SCRPATH"
# Be real careful here
rm -rfv "./$OUTPK3DIR"
rm -rfv "./prefix"