#!/bin/bash
# This script builds pdfium in place. Upon succesfull build it saves the
# MD5 sum in 'pdfium.md5' and uploads the executable to cloud storage, if it's
# not already there.
set -x -e

OLD_DIR=`pwd`

cd "$( dirname "${BASH_SOURCE[0]}" )"
source ./build_setup.sh

REPO="https://pdfium.googlesource.com/pdfium"
COMMIT=$(<${PDFIUM_COMMIT_FILE})

TARGET_DIRECTORY=`pwd`
PDFIUM_BUILD_DIRECTORY="./build"

# Get rid of the MD5 file to detect failures.
rm -f "${TARGET_DIRECTORY}/${MD5_FILE}"

mkdir -p "$PDFIUM_BUILD_DIRECTORY"
cd "$PDFIUM_BUILD_DIRECTORY"

if ! [ -d pdfium ]; then
    git clone "$REPO"
fi

if ! [ -f ".gclient" ] ; then
    gclient config --unmanaged "$REPO"
fi

cd pdfium

if [ "$(git diff --shortstat)" ] ; then
    git stash save
fi

if [ "$(git rev-parse HEAD)" != "$COMMIT" ]; then
    git fetch
    git checkout "$COMMIT"
fi

if [ "$(git hash-object DEPS)" != "$(git config sync-deps.last)" ] ; then
    gclient sync
    git config sync-deps.last "$(git hash-object DEPS)"
fi

GYP_GENERATORS=ninja build/gyp_pdfium

ninja -C out/Release ${EXECUTABLE}

mkdir -p "$TARGET_DIRECTORY"

cp -a out/Release/${EXECUTABLE} "${TARGET_DIRECTORY}/${EXECUTABLE}"

# Get the MD5 hash
MD5=`md5sum ${TARGET_DIRECTORY}/${EXECUTABLE} | awk '{ print $1 }'`
CLOUD_PATH="${CLOUD_PATH_BASE}-${MD5}"

# Upload the file to GS if it's not already there.
gsutil cp -n -a public-read "${TARGET_DIRECTORY}/${EXECUTABLE}" "${CLOUD_PATH}"

# Write the local MD5 hash of the binary and remove the binary.
echo ${MD5} > ${TARGET_DIRECTORY}/${MD5_FILE}
rm "${TARGET_DIRECTORY}/${EXECUTABLE}"

cd "$OLD_DIR"
