From c93108cc3cbc1cc685811776b9b771aef34fa25f Mon Sep 17 00:00:00 2001 From: NickDaly Date: Sat, 6 Jun 2009 17:55:30 -0500 Subject: Moved the list of games into an external file (includes/cd-list.sh). --- auto-installer.sh | 101 +++++++-------------------------------- includes/autoinstall-includes.sh | 35 -------------- includes/cd-includes.sh | 2 +- includes/cd-list.sh~ | 97 +++++++++++++++++++++++++++++++++++++ includes/generic-includes.sh | 29 +++++++++++ 5 files changed, 145 insertions(+), 119 deletions(-) create mode 100644 includes/cd-list.sh~ diff --git a/auto-installer.sh b/auto-installer.sh index e51d19e..beffa06 100755 --- a/auto-installer.sh +++ b/auto-installer.sh @@ -28,89 +28,14 @@ source "$scriptdir/includes/generic-includes.sh" source "$scriptdir/includes/cd-includes.sh" source "$scriptdir/includes/patch-includes.sh" source "$scriptdir/includes/autoinstall-includes.sh" +source "$scriptdir/includes/cd-list.sh" parseargs "$@" echo "Checking CD version" -CDMD5=$(md5sum $CDMOUNT/data1.cab|awk '{print $1}') +export CDMD5=$(md5sum "${CDMOUNT}/data1.cab"|awk '{print $1}') -while [ -z "$MINSCRIPT" ]; do - case "$CDMD5" in - $BG1_5CD_INTL_MD5 ) - FULLGAMENAME="Baldurs Gate 1: 5CD International version" - SHORTGAMENAME="baldursgate1" - MINSCRIPT="bg1/install-5cd-minimal.sh" - EXTRASCRIPT="bg1/install-5cd-extra.sh" - PATCHES="bg1/install-patch-intl.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-baldurdash-text.sh" - WINDOWSFILES="baldur.exe bgmain.exe config.exe keymap.ini luaauto.cfg update.url" - CDNO=5 - ;; - $BG1_TOTSC_3CD_US_MD5 ) - FULLGAMENAME="Baldurs Gate 1 & Tales of the Sword Coast: 3CD US version" - SHORTGAMENAME="baldursgate1totsc" - MINSCRIPT="bg1/install-3cd-minimal.sh" - EXTRASCRIPT="bg1/install-3cd-extra.sh" - PATCHES="bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" - WINDOWSFILES="baldur.exe bgmain.exe config.exe keymap.ini luaauto.cfg update.url" - CDNO=3 - ;; - $BG1_TOTSC_1CD_UK_MD5 ) - FULLGAMENAME="Baldurs Gate 1 & Tales of the Sword Coast: 1CD UK version" - SHORTGAMENAME="baldursgate1totsc" - MINSCRIPT="bg1/install-1cd-totsc-uk.sh" - PATCHES="bg1/install-patch-totsc-uk.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" - WINDOWSFILES="bgmain2.exe baldur.exe config.exe mconvert.exe" - ;; - $BG2_4CD_US_MD5 ) - FULLGAMENAME="Baldurs Gate 2 - Shadows of Amn: 4CD US version" - SHORTGAMENAME="baldursgate2soa" - MINSCRIPT="bg2/install-4cd-minimal-us.sh" - # TODO: uncomment when complete EXTRASCRIPT="bg2/install-4cd-extra-us.sh" - PATCHES="" # TODO: fill in patches - # bg2/install-patch-soa-us.sh bg2/install-patch-baldurdash-fix.sh bg2/install-patch-soa-baldurdash-text.sh" - WINDOWSFILES="bgdxtest.exe bggltest.exe glsetup.exe bgconfig.exe bgmain.exe charview.exe" - ;; - # $BG2_TOB_1CD_US_MD5 ) - # FULLGAMENAME="Baldurs Gate 2 - Throne of Bhaal: 1CD US version" - # SHORTGAMENAME="baldursgate2tob" - # MINSCRIPT="bg2/install-1cd-tob-us.sh" - # PATCHES="" # TODO: fill in patches - # # bg2/install-patch-totsc-uk.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" - # # TODO: correct the list of windows files. - # WINDOWSFILES="" # "bgmain2.exe baldur.exe config.exe mconvert.exe" - # ;; - $PST_2CD_MD5 ) - FULLGAMENAME="Planescape Torment: 2CD version" - SHORTGAMENAME="planescapetorment" - MINSCRIPT="pst/install-2cd-minimal.sh" - EXTRASCRIPT="pst/install-2cd-extra.sh" - WINDOWSFILES="torment.exe ereg" - CDNO=2 - ;; - $PST_4CD_MD5 ) - FULLGAMENAME="Planescape Torment: 4CD version" - SHORTGAMENAME="planescapetorment" - MINSCRIPT="pst/install-4cd-minimal.sh" - EXTRASCRIPT="pst/install-4cd-extra.sh" - PATCHES="pst/install-patch-official.sh" - WINDOWSFILES="torment.exe ereg" - CDNO=4 - ;; - $IWD_2CD_UK_MD5 ) - FULLGAMENAME="Icewind Dale 2CD UK version" - SHORTGAMENAME="icewinddale" - MINSCRIPT="iwd/install-2cd-uk-minimal.sh" - EXTRASCRIPT="iwd/install-2cd-uk-extra.sh" - PATCHES="iwd/install-patch-uk-fix.sh iwd/install-patch-us.sh" - WINDOWSFILES="3dfx.dll config.exe icewind.ini keymap.ini language.ini mpicewnd.mpi" - CDNO=2 - ;; - * ) - echo "Unrecognised CD - please select game from menu" - choosegame - ;; - esac -done +get_game [ -z "$TARGETDIR" ] && [ -n "$SHORTGAMENAME" ] && export TARGETDIR="$PWD/$SHORTGAMENAME" [ -z "$TARGETDIR" ] && diequietly @@ -130,13 +55,23 @@ if [ -n "$EXTRASCRIPT" ]; then fi fi +if [ -n "$EXPANSIONSCRIPT" && "$FULLINSTALL" -eq 0 ]; then + if query "Do you want to install the files needed by the expansion $EXPANSIONNAME?" y; then + EXPANSIONINSTALL=1 + "${scriptdir}/${EXPANSIONSCRIPT}" -i "$TARGETDIR" -c "$CDMOUNT" 1>/dev/null || diequietly + else + EXPANSIONINSTALL=0 + fi +fi + + if [ -n "$PATCHES" ]; then - for patch in $PATCHES; do + for patch in "$PATCHES"; do patch="$scriptdir/$patch" # grab 17th line from scripts (description line; after license) - patchtitle=$(sed -n 17p $patch|cut -d ' ' -f 2-) + patchtitle=$(sed -n 17p "$patch"|cut -d ' ' -f 2-) if query "Do you want to install $patchtitle" y; then - $patch \ + "$patch" \ -i "$TARGETDIR" \ -p "$PATCHDIR" \ -l "$LANGUAGE" \ @@ -148,8 +83,8 @@ fi if [ -n "$WINDOWSFILES" ]; then if query "Do you want to remove unneeded windows files?" n; then - for badfile in $WINDOWSFILES; do - rm -rf "$TARGETDIR"/$badfile + for badfile in "$WINDOWSFILES"; do + rm -rf "${TARGETDIR}/${badfile}" done fi fi diff --git a/includes/autoinstall-includes.sh b/includes/autoinstall-includes.sh index 8f80036..933e731 100644 --- a/includes/autoinstall-includes.sh +++ b/includes/autoinstall-includes.sh @@ -38,41 +38,6 @@ function query done } -function choosegame -{ - while true; do - choice=0 - echo "Choose the game to install from the list:" - echo "1 | Baldur's Gate 1 (5CD International version)" - echo "2 | Baldurs Gate & Tales of the Sword Coast (3CD US version)" - echo "3 | Tales of the Sword Coast (1CD UK version)" - echo "4 | Planescape: Torment (4CD version)" - echo "5 | Planescape: Torment (2CD version)" - echo "6 | Icewind Dale (2CD UK version)" - echo "7 | Icewind Dale 2 (2CD version)" - - read -n 1 choice - echo - - case $choice in - 1 ) export CDMD5="138528155dfeb695bd63f90eacee7dc0" - return 0 ;; - 2 ) export CDMD5="1a6828b97a27967e8c4acc25e1ef48d2" - return 0 ;; - 3 ) export CDMD5="e27d259ddc0171ff945dbba136e60309" - return 0 ;; - 4 ) export CDMD5="5e8c2075163aca124de4a467fb33063d" - return 0 ;; - 5 ) export CDMD5="640b61443cc86c434f1b6826e63c0e33" - return 0 ;; - 6 ) export CDMD5="b79582f4f80270d48e6b26f529ba31dd" - return 0 ;; - 7 ) export CDMD5="77307366ba3e8a246f6f238cbb3b7874" - return 0 ;; - esac - done -} - function recommendcfg { # usage: recommendcfg [numofcds] diff --git a/includes/cd-includes.sh b/includes/cd-includes.sh index 3ef9670..86359ea 100644 --- a/includes/cd-includes.sh +++ b/includes/cd-includes.sh @@ -32,7 +32,7 @@ export IWD_2CD_US_MD5="b79582f4f80270d48e6b26f529ba31dd" export IWD_2CD_UK_MD5="b79582f4f80270d48e6b26f529ba31dd" export IWD_HOW_1CD_US_MD5="d2c42de47026f6384053965319ff511b" -export IWD2_2CD_US_MD5="77307366ba3e8a246f6f238cbb3b7874" +export IWD2_2CD_INTL_MD5="77307366ba3e8a246f6f238cbb3b7874" # a record of every IE collection I can find. export IWD_ULTIMATE_COLLECTION_MD5="" diff --git a/includes/cd-list.sh~ b/includes/cd-list.sh~ new file mode 100644 index 0000000..17cdfe6 --- /dev/null +++ b/includes/cd-list.sh~ @@ -0,0 +1,97 @@ +#!/bin/bash +# Copyright 2009 Nick White +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# See for a copy of the GNU General +# Public License. +# +# Selects the appropriate installer(s) for an Infinity Engine game, +# based on the CD inserted + +while [ -z "$MINSCRIPT" ]; do + case "$1" in + $BG1_5CD_INTL_MD5 ) + FULLGAMENAME="Baldurs Gate 1: 5CD International version" + SHORTGAMENAME="baldursgate1" + MINSCRIPT="bg1/install-5cd-minimal.sh" + EXTRASCRIPT="bg1/install-5cd-extra.sh" + PATCHES="bg1/install-patch-intl.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-baldurdash-text.sh" + WINDOWSFILES="baldur.exe bgmain.exe config.exe keymap.ini luaauto.cfg update.url" + CDNO=5 + ;; + $BG1_TOTSC_3CD_US_MD5 ) + FULLGAMENAME="Baldurs Gate 1 & Tales of the Sword Coast: 3CD US version" + SHORTGAMENAME="baldursgate1totsc" + MINSCRIPT="bg1/install-3cd-minimal.sh" + EXTRASCRIPT="bg1/install-3cd-extra.sh" + PATCHES="bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" + WINDOWSFILES="baldur.exe bgmain.exe config.exe keymap.ini luaauto.cfg update.url" + CDNO=3 + ;; + $BG1_TOTSC_1CD_UK_MD5 ) + FULLGAMENAME="Baldurs Gate 1 & Tales of the Sword Coast: 1CD UK version" + SHORTGAMENAME="baldursgate1totsc" + MINSCRIPT="bg1/install-1cd-totsc-uk.sh" + PATCHES="bg1/install-patch-totsc-uk.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" + WINDOWSFILES="bgmain2.exe baldur.exe config.exe mconvert.exe" + ;; + $BG2_4CD_US_MD5 ) + FULLGAMENAME="Baldurs Gate 2 - Shadows of Amn: 4CD US version" + SHORTGAMENAME="baldursgate2soa" + MINSCRIPT="bg2/install-4cd-minimal-us.sh" + # TODO: uncomment when complete EXTRASCRIPT="bg2/install-4cd-extra-us.sh" + EXPANSIONSCRIPT= + PATCHES="" # TODO: fill in patches + # bg2/install-patch-soa-us.sh bg2/install-patch-baldurdash-fix.sh bg2/install-patch-soa-baldurdash-text.sh" + WINDOWSFILES="bgdxtest.exe bggltest.exe glsetup.exe bgconfig.exe bgmain.exe charview.exe" + ;; + # $BG2_TOB_1CD_US_MD5 ) + # FULLGAMENAME="Baldurs Gate 2 - Throne of Bhaal: 1CD US version" + # SHORTGAMENAME="baldursgate2tob" + # MINSCRIPT="bg2/install-1cd-tob-us.sh" + # PATCHES="" # TODO: fill in patches + # # bg2/install-patch-totsc-uk.sh bg1/install-patch-baldurdash-fix.sh bg1/install-patch-totsc-baldurdash-text.sh" + # # TODO: correct the list of windows files. + # WINDOWSFILES="" # "bgmain2.exe baldur.exe config.exe mconvert.exe" + # ;; + $PST_2CD_MD5 ) + FULLGAMENAME="Planescape Torment: 2CD version" + SHORTGAMENAME="planescapetorment" + MINSCRIPT="pst/install-2cd-minimal.sh" + EXTRASCRIPT="pst/install-2cd-extra.sh" + WINDOWSFILES="torment.exe ereg" + CDNO=2 + ;; + $PST_4CD_MD5 ) + FULLGAMENAME="Planescape Torment: 4CD version" + SHORTGAMENAME="planescapetorment" + MINSCRIPT="pst/install-4cd-minimal.sh" + EXTRASCRIPT="pst/install-4cd-extra.sh" + PATCHES="pst/install-patch-official.sh" + WINDOWSFILES="torment.exe ereg" + CDNO=4 + ;; + $IWD_2CD_UK_MD5 ) + FULLGAMENAME="Icewind Dale 2CD UK version" + SHORTGAMENAME="icewinddale" + MINSCRIPT="iwd/install-2cd-uk-minimal.sh" + EXTRASCRIPT="iwd/install-2cd-uk-extra.sh" + PATCHES="iwd/install-patch-uk-fix.sh iwd/install-patch-us.sh" + WINDOWSFILES="3dfx.dll config.exe icewind.ini keymap.ini language.ini mpicewnd.mpi" + CDNO=2 + ;; + * ) + echo "Unrecognised CD - please select game from menu" + choosegame + ;; + esac +done diff --git a/includes/generic-includes.sh b/includes/generic-includes.sh index ac62dd2..1ed5472 100644 --- a/includes/generic-includes.sh +++ b/includes/generic-includes.sh @@ -152,6 +152,24 @@ function copylower fi } +function setlower +{ + # usage: setlower target + if [ "$1" ] + then + cd "$1" + for each_file in "`find ./ -iname "*"`" + do + lower="`echo "$each_file" | tr "[:upper:]" "[:lower:]"`" + + if [ "$each_file" != "$lower" ] + then + mv "$each_file" "$lower" + fi + done + fi +} + function move_and_remove { # usage: move_and_remove source destination @@ -160,3 +178,14 @@ function move_and_remove cp -R "$1/"* "$2" || die rm -r "$1" } + +function teardown +{ + # usage: teardown target + if [ "$1" ] + then + cleanuptmp + setperms "$1" + setlower "$1" + fi +} -- cgit v1.2.3