#!/bin/zsh

if [ ! -f Version ]; then
  echo "Datei „Version“ nicht gefunden. "
  echo "Dieses Skript muss vom obersten Verzeichnis von FreeDoko aufgerufen werden."
  exit 1
fi
VERSION=$(head -n 1 Version | awk '{print $2}')
RELEASE_DIR="${HOME}/FreeDoko/Releases/FreeDoko_${VERSION}.release"

# Prüft einige Dateien
function check_files() {
  echo "- Lizenz"
  if [ ! -s FreeDoko_${VERSION}/COPYING ]; then
    echo "Die Lizenz „COPYING“ existiert nicht oder ist leer:"
    ls -l FreeDoko_${VERSION}/COPYING
    exit 1
  fi
  echo "- Kartensätze"
  echo "- InnoCard Kartensatz"
  if [ -d FreeDoko_${VERSION}/data/cardsets/InnoCard ]; then
    echo "Der Kartensatz „InnoCard“ existiert:"
    ls -l FreeDoko_${VERSION}/data/cardsets
    exit 1
  fi
  if [ ! -s FreeDoko_${VERSION}/cardsets/VectorPlayingCards/185/cards/club_queen.png ]; then
    echo "Der Kartensatz „VectorPlayingCards/185“ existiert nicht:"
    ls -l FreeDoko_${VERSION}/cardsets/VectorPlayingCards
    exit 1
  fi
  if [ ! -s FreeDoko_${VERSION}/cardsets/xskat/french/cards/club_queen.png ]; then
    echo "Der Kartensatz „xskat/french“ existiert nicht:"
    ls -l FreeDoko_${VERSION}/cardsets
    exit 1
  fi
  echo "- Sound"
  if [ ! -s FreeDoko_${VERSION}/sounds/de/male/mbrola/re.wav ]; then
    echo "Der Sound „mbrola“ existiert nicht:"
    ls -l FreeDoko_${VERSION}/sounds/de/male
    exit 1
  fi
  echo "- Sprachdatei"
  if [ ! -s FreeDoko_${VERSION}/po/de/LC_MESSAGES/FreeDoko.mo ]; then
    echo "Die Sprachdatei „FreeDoko.mo“ existiert nicht oder ist leer:"
    ls -l FreeDoko_${VERSION}/po/de/LC_MESSAGES/FreeDoko.mo
    exit 1
  fi
  echo "- Handbuch"
  if [ ! -s FreeDoko_${VERSION}/doc/manual/de/index.html ]; then
    echo "Das Handbuch existiert nicht:"
    ls -l FreeDoko_${VERSION}/doc
    exit 1
  fi
}

rm -rf /tmp/FreeDoko.test_release
mkdir /tmp/FreeDoko.test_release
cd /tmp/FreeDoko.test_release


# Quelltext

echo "Prüfe FreeDoko_${VERSION}.src.zip"

if [ ! -s "${RELEASE_DIR}"/FreeDoko_${VERSION}.src.zip ]; then
  echo "Die Datei „FreeDoko_${VERSION}.src.zip“ existiert nicht oder ist leer:"
  ls -l "${RELEASE_DIR}"/
  exit 1
fi
unzip -q "${RELEASE_DIR}"/FreeDoko_${VERSION}.src.zip
echo "- InnoCard Kartensatz"
if [ -d FreeDoko_${VERSION}/data/cardsets/InnoCard ]; then
  echo "Der Kartensatz „InnoCard“ existiert:"
  ls -l FreeDoko_${VERSION}/data/cardsets
  exit 1
fi
echo "- VectorPlayingCards Kartensatz"
if [ ! -s FreeDoko_${VERSION}/data/cardsets/VectorPlayingCards/185/cards/club_queen.png ]; then
  echo "Der Kartensatz „VectorPlayingCards/185“ existiert nicht:"
  ls -l FreeDoko_${VERSION}/data/cardsets/
  exit 1
fi
echo "- xskat Kartensatz"
if [ ! -s FreeDoko_${VERSION}/data/cardsets/xskat/french/cards/club_queen.png ]; then
  echo "Der Kartensatz „xskat/french“ existiert nicht:"
  ls -l FreeDoko_${VERSION}/data/cardsets
  exit 1
fi
echo "- homepage"
if [ -d FreeDoko_${VERSION}/homepage ]; then
  echo "Der Verzeichnis „homepage“ existiert:"
  ls -l FreeDoko_${VERSION}/
  exit 1
fi
echo "- Kompilieren"
pushd FreeDoko_${VERSION}
sed -i "s|^MAIN_DIRECTORY .*$|MAIN_DIRECTORY = /tmp/usr/local|" Makefile.install.directories
make compile
make install
if [ ! -s /tmp/usr/local/games/FreeDoko ]; then
  echo "Das Programm existiert nicht unter „/tmp/usr/local/games/“:"
  ls -l /tmp/usr/local/games/
  exit 1
fi
#echo "- release-Version"
#if $( /tmp/usr/local/games/FreeDoko --version | head -n 1 | grep -vq "(release)" ); then
#  echo "Die Version ist nicht release:"
#  /tmp/usr/local/games/FreeDoko --version | head -n 1
#  exit 1
#fi
echo "- Programmstart"
echo "  manuelle Tests:"
echo "  . ein Spiel"
echo "  . Sound"
cd /tmp/usr/local/games/
./FreeDoko --no-automatic-savings -
popd
rm -rf FreeDoko_${VERSION}


# Linux zip

echo "Prüfe FreeDoko_${VERSION}.Linux.zip"
if [ ! -s "${RELEASE_DIR}"/FreeDoko_${VERSION}.Linux.zip ]; then
  echo "Die Datei „FreeDoko_${VERSION}.Linux.zip“ existiert nicht oder ist leer:"
  ls -l "${RELEASE_DIR}"/
  exit 1
fi
unzip -q "${RELEASE_DIR}"/FreeDoko_${VERSION}.Linux.zip
echo "- Programm"
if [ ! -s FreeDoko_${VERSION}/FreeDoko ]; then
  echo "Die Programmdatei „FreeDoko“ existiert nicht oder ist leer:"
  ls -l FreeDoko_${VERSION}
  exit 1
fi
check_files
echo "- Programmstart"
echo "  manuelle Tests:"
echo "  . ein Spiel"
echo "  . Sound"
cd FreeDoko_${VERSION}/
./FreeDoko --no-automatic-savings -
cd -

rm -rf FreeDoko_${VERSION}


# Windows zip

echo "Prüfe FreeDoko_${VERSION}.Windows.zip"
if [ ! -s "${RELEASE_DIR}"/FreeDoko_${VERSION}.Windows.zip ]; then
  echo "Die Datei „FreeDoko_${VERSION}.Windows.zip“ existiert nicht oder ist leer:"
  ls -l "${RELEASE_DIR}"/
  exit 1
fi
unzip -q "${RELEASE_DIR}"/FreeDoko_${VERSION}.Windows.zip
echo "- Programm"
if [ ! -s FreeDoko_${VERSION}/FreeDoko.exe ]; then
  echo "Die Programmdatei „FreeDoko.exe“ existiert nicht oder ist leer:"
  ls -l FreeDoko_${VERSION}
  exit 1
fi
check_files

cp "${RELEASE_DIR}"/FreeDoko_${VERSION}.Windows.zip ~/mnt/qemu
pushd ~/mnt/qemu
rm -rf FreeDoko_${VERSION}
unzip FreeDoko_${VERSION}.Windows.zip
popd



# Windows setup

echo "Prüfe FreeDoko_${VERSION}.Setup.exe"
if [ ! -s "${RELEASE_DIR}"/FreeDoko_${VERSION}.Setup.exe ]; then
  echo "Die Datei „FreeDoko_${VERSION}.Setup.exe“ existiert nicht oder ist leer:"
  ls -l "${RELEASE_DIR}"/
  exit 1
fi
cp "${RELEASE_DIR}"/FreeDoko_${VERSION}.Setup.exe ~/mnt/qemu/


ls -l "${RELEASE_DIR}/"

echo "Manuell zu testen:"
echo "* Installation unter Windows"
echo "- Symbol unter Windows"
echo "- Sound"
echo "- Deinstallation unter Windows"
echo "* zip-Archiv unter Windows entpacken"
echo "- FreeDoko starten"
echo "- Sound"
