#!/bin/bash

set -e

PROJECT_PATH=$( cd "$( dirname "$0" )/.." && pwd )

function check_devices {
    local devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}'`
    if [ -z "$devices"  ] ; then
        echo "1"
    else
        echo "0"
    fi
}

function emulate {
    declare -a avd_list=($(android list avd | grep "Name:" | cut -f 2 -d ":" | xargs))
    # we need to start adb-server
    adb start-server 1>/dev/null

    # Do not launch an emulator if there is already one running or if a device is attached
    if [ $(check_devices) == 0 ] ; then
        echo "Device attached or emulator already running"
        return
    fi

    local avd_id="1000" #FIXME: hopefully user does not have 1000 AVDs
    # User has no AVDs
    if [ ${#avd_list[@]} == 0 ]
    then
        echo "You don't have any Android Virtual Devices. Please create at least one AVD."
        echo "android"
    fi
    # User has only one AVD
    if [ ${#avd_list[@]} == 1 ]
    then
        emulator -cpu-delay 0 -no-boot-anim -cache /tmp/cache -avd ${avd_list[0]} 1> /dev/null 2>&1 &
    # User has more than 1 AVD
    elif [ ${#avd_list[@]} -gt 1 ]
    then
        while [ -z ${avd_list[$avd_id]} ]
        do
            echo "Choose from one of the following Android Virtual Devices [0 to $((${#avd_list[@]}-1))]:"
            for(( i = 0 ; i < ${#avd_list[@]} ; i++ ))
            do
                echo "$i) ${avd_list[$i]}"
            done
            echo -n "> "
            read avd_id
        done
        emulator -cpu-delay 0 -no-boot-anim -cache /tmp/cache -avd ${avd_list[$avd_id]} 1> /dev/null 2>&1 &
    fi
    
}

function clean {
    ant clean
}
# has to be used independently and not in conjuction with other commands
function log {
    adb logcat
}

function debug {
    if [ $(check_devices) == 0 ] ; then
        ant debug install
    else
        ant debug
        echo "##################################################################"
        echo "# Plug in your device or launch an emulator with cordova/emulate #"
        echo "##################################################################"
    fi
}

function launch {
    local launch_str=$(java -jar $PROJECT_PATH/cordova/appinfo.jar $PROJECT_PATH/AndroidManifest.xml)
    adb shell am start -n $launch_str 
}

function BOOM {
    clean && debug && launch 
}

# TODO parse arguments
(cd $PROJECT_PATH && $1)
