#!/usr/bin/env bash

set -ex

platform=$1
action=$2
apk_name=${3:-'colmeia-local'}
container_image="gcr.io/colmeia-dev/colmeia-apk-builder"

if [ "$platform" != "android" -a "$platform" != "ios" ]; then
    echo "Platform incorrect: android or ios"
    exit 1
fi

prepare_client() {
    npm run build:mobile
}

push_assets() {
    (
        cd mobile
        code-push login --accessKey 8a5def06078fd86907525d1f640a782dc89f62b4 | exit 0
        code-push release-cordova Colmeia-$platform $platform
    )
}

build_app() {
    if [ "$platform" = "android" ]; then
        docker pull $container_image
        docker run -it --rm \
            -v "$HOME/.gradle":/root/.gradle \
            -v "$PWD":/application ${container_image} \
            sh -c "sh ./scripts/build-android.sh"
    else
        echo "Não foi testado com IOS"
        sleep 10
        sh /scripts/build-ios.sh
    fi
}

push_bucket() {
    local file_src='mobile/platforms/android/app/build/outputs/apk/debug/app-debug.apk'
    local file_dst="${apk_name}.apk"
    if [ "$platform" = "ios" ]; then
       file_src=''
       file_dst=''
       echo "Não sei onde fica os arquivos para enviar"
       exit 0
    fi

    gsutil cp ${file_src} gs://devel-apk.colmeia.me/${file_dst}
}

uninstall_apk() {
    echo "Uninstalling apk from device..."
    adb uninstall me.colmeia.app >/dev/null 2>&1 | true
}

install_apk() {
    cd "$(dirname "$0")"
    echo "Installing on device"
    adb install -r ../mobile/platforms/android/app/build/outputs/apk/debug/app-debug.apk
}

launch_colmeia() {
    adb shell monkey -p me.colmeia.app 1
}

case $action in
    full)
        prepare_client
        build_app
        push_assets
        push_bucket
    ;;
    apk)
        prepare_client
        build_app
        push_bucket
    ;;
    build-install)
        prepare_client
        build_app
        uninstall_apk
        install_apk
        launch_colmeia
    ;;
    assets)
        prepare_client
        push_assets
        push_bucket
    ;;
    *)
        echo "Action incorrect, options [full|apk|assets]"
        exit 1
    ;;
esac
