#!/bin/bash -e

# prepare environment
ROOT_DIRECTORY="$(readlink -f "$(dirname "$0")/..")"
BUFFER_DIRECTORY="$(readlink -f "$(
    mktemp -d --suffix=AIRBRIDGE_BUILD_QA 2>/dev/null \
    || mktemp -d -t AIRBRIDGE_BUILD_QA
)")"
rm -rf build/qa
mkdir -p build/qa
npm clean-install
npm run build
(
    cd qa
    npm clean-install
)

# build ios
if [[ $BUILD_QA == ios ]]; then
    (
        cd qa/ios
        pod install
    )
    xcodebuild archive \
        -workspace "$ROOT_DIRECTORY/qa/ios/AirbridgeQA.xcworkspace" \
        -scheme  'AirbridgeQA' \
        -configuration 'Release' \
        -destination 'generic/platform=iOS' \
        -archivePath "$BUFFER_DIRECTORY/ios-application.xcarchive" \
        -allowProvisioningUpdates
    PLIST+='<?xml version="1.0" encoding="UTF-8"?>\n'
    PLIST+='<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n'
    PLIST+='<plist version="1.0">\n'
    PLIST+='<dict>\n'
    PLIST+='    <key>method</key>\n'
    PLIST+='    <string>ad-hoc</string>\n'
    PLIST+='</dict>\n'
    PLIST+='</plist>\n'
    printf "$PLIST" > "$BUFFER_DIRECTORY/ios-application.plist"
    xcodebuild -exportArchive \
        -archivePath "$BUFFER_DIRECTORY/ios-application.xcarchive" \
        -exportPath "$BUFFER_DIRECTORY/ios-application" \
        -exportOptionsPlist "$BUFFER_DIRECTORY/ios-application.plist" \
        -allowProvisioningUpdates
    cp -r "$BUFFER_DIRECTORY/ios-application/AirbridgeQA.ipa" "build/qa/$BUILD_OUTPUT"
fi

# build android
if [[ $BUILD_QA == android ]]; then
    echo "$KEYSTORE" \
        | base64 --decode \
        > "$BUFFER_DIRECTORY/android-application.keystore"
    export KEYSTORE_FILE="$BUFFER_DIRECTORY/android-application.keystore"
    (
        cd qa/android
        ./gradlew app:assembleRelease
    )
    cp -r 'qa/android/app/build/outputs/apk/release/app-release.apk' "build/qa/$BUILD_OUTPUT"
fi

# clean environment
rm -rf "$BUFFER_DIRECTORY"
