#!/bin/sh

[ `uname -s` != "Darwin" ] && return

function tab () {
    local cmd=""
    local cdto="$PWD"
    local args="$@"

    if [ -d "$1" ]; then
        cdto=`cd "$1"; pwd`
        args="${@:2}"
    fi

    if [ -n "$args" ]; then
        cmd="; $args"
    fi

    iterm_exists=`osascript -e "id of application \"iterm2\""`
    if [ ! -z iterm_exists ]; then
    osascript &>/dev/null <<EOF
        tell application "iTerm2"
            tell current window
                set newTab to (create tab with default profile)
                tell newTab
                    tell current session
                        write text "cd \"$cdto\"$cmd"
                    end tell
                end tell
            end tell
        end tell
EOF
    else
    osascript &>/dev/null <<END
tell app "Terminal" to do script "cd \"$cdto\"$cmd"
END
    fi
}

if [ ! -z $1 ]
then
 device_type="$1"
else
 device_type="genymotion"
fi

if [ ! -z $2 ]
then
 cljs_build="$2"
else
 cljs_build="android"
fi

if [ "$device_type" = "genymotion" ]
then
# Find Device based on Android version 6.0.0
device=$(/Applications/Genymotion\ Shell.app/Contents/MacOS/genyshell -c "devices list" | grep "6.0.0\|7.0.0")
#echo ${device##*| }
# Launch device in Genymotion
open -a /Applications/Genymotion.app/Contents/MacOS/player.app --args --vm-name "${device##*| }"
fi

# Install deps, prepare for genymotion and figwheel
lein deps && ./re-natal deps && ./re-natal use-android-device "${device_type}" && ./re-natal use-figwheel

# open figwheel in new tab
tab "lein figwheel-repl ${cljs_build}"

# open react-native package in new tab
tab "react-native start"

# echo "Press any key when emulator, figwheel and packager are ready" && read -n 1
sleep 10s

adb reverse tcp:8081 tcp:8081 && adb reverse tcp:3449 tcp:3449

react-native run-android

if [ ! -z $3 ]
then
 tab "appium"
 lein test
 lein doo node test once
fi