#!/bin/sh
# Shell script to build a clean Pharo deployable image

set -veu

echo "\nChecking Pharo VM setup..."
if [ ! -e build ]; then
    echo "ERROR: Didn't detect a Pharo VM...";
    exit;
fi

rm -rf deploy
mkdir deploy

echo "\nCopying Pharo image and project scripts..."
cp -ar $PHARO_DIR/* build
cp scripts/*.st build
cd build

ls -al

echo "\nTesting Pharo image..."
./pharo Pharo.image printVersion

if [ "$STRIP_IMAGE" = true ]; then
    echo "\nStripping Pharo image...";
    ./pharo Pharo.image --no-default-preferences --save  --quit st minimal.st;
    ls -lh Pharo.*
fi

echo "\nLoading project packages..."
./pharo Pharo.image --no-default-preferences --save --quit st loadProject.st config.st \
    "{'$PROJECT_NAME'. '$PROJECT_API_KEY'}" 2>&1 | tee LoadProject.log


ls -lh Pharo.*

echo"\nVerifying project load history..."
if (grep -f ../scripts/errorPatterns.txt LoadLocal.log | grep -v "XMLParser"); then
    echo "\nERRORS detected in package load!";
    exit 1;
fi

echo"\nCreating project deployment zip..."
# for ultra small could also -x \*.sources \*.changes
#       */libgit2.* */libSDL2* */B3DAccelerator* */JPEGRead* */vm-sound* */vm-display* \
# and: zip -uR ../deploy/$PROJECT_NAME.zip *-null.so

zip -r --symlinks ../deploy/$PROJECT_NAME.zip * -x pharo-local/\*  \*.st \*.log \
    tmp/\* github-cache/\* */__MACOSX\*

cd ..

cp scripts/deploy.sh deploy
ls -lh deploy

SIZE=$(bc<<<"scale=2; $(unzip -l deploy/$PROJECT_NAME.zip | tail -1 | xargs | cut -d' ' -f1)/1024/1024")
echo "\nContents Size $SIZE mb\n"
