cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fil...@apache.org
Subject android commit: Proper modularization of bash scripts for [CB-3627], but not solved yet. wait_for_emulator does not work atm
Date Thu, 13 Jun 2013 23:46:45 GMT
Updated Branches:
  refs/heads/master e86d811fc -> add107583


Proper modularization of bash scripts for [CB-3627], but not solved yet. wait_for_emulator
does not work atm


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/add10758
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/add10758
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/add10758

Branch: refs/heads/master
Commit: add107583f6cac15e226ed1612b761fadc2e5a46
Parents: e86d811
Author: Fil Maj <maj.fil@gmail.com>
Authored: Thu Jun 13 16:46:21 2013 -0700
Committer: Fil Maj <maj.fil@gmail.com>
Committed: Thu Jun 13 16:46:21 2013 -0700

----------------------------------------------------------------------
 bin/templates/cordova/build                     |  24 +-
 bin/templates/cordova/clean                     |   9 +-
 bin/templates/cordova/lib/cordova               | 386 -------------------
 bin/templates/cordova/lib/install-device        |  34 +-
 bin/templates/cordova/lib/install-emulator      |  35 +-
 bin/templates/cordova/lib/list-devices          |  17 +-
 bin/templates/cordova/lib/list-emulator-images  |  19 +-
 .../cordova/lib/list-started-emulators          |  19 +-
 bin/templates/cordova/lib/start-emulator        |  30 +-
 bin/templates/cordova/log                       |   7 +-
 bin/templates/cordova/run                       | 107 ++++-
 11 files changed, 257 insertions(+), 430 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/build
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/build b/bin/templates/cordova/build
index 3cbd9c1..5ba36c0 100755
--- a/bin/templates/cordova/build
+++ b/bin/templates/cordova/build
@@ -16,8 +16,24 @@
 # specific language governing permissions and limitations
 # under the License.
 
-set -e
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+PROJECT_PATH=$( cd "$DIR/.." && pwd )
 
-CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd )
-
-bash "$CORDOVA_PATH"/lib/cordova build "$@"
+if [[ "$#" -eq 1 ]] ; then
+    if [[ $1 == "--debug" ]] ; then
+        $DIR/clean
+        ant debug -f "$PROJECT_PATH"/build.xml
+    elif [[ $1 == "--release" ]] ; then
+        $DIR/clean
+        ant release -f "$PROJECT_PATH"/build.xml
+    elif [[ $1 == "--nobuild" ]] ; then
+        echo "Skipping build..."
+    else
+        echo "Error : Build command '$1' not recognized."
+        exit 2
+    fi
+else
+    echo "Warning : [ --debug | --release | --nobuild ] not specified, defaulting to --debug"
+    $DIR/clean
+    ant debug -f "$PROJECT_PATH"/build.xml
+fi

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/clean
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/clean b/bin/templates/cordova/clean
index f52966a..b943b47 100755
--- a/bin/templates/cordova/clean
+++ b/bin/templates/cordova/clean
@@ -16,8 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 
-set -e
-
-CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd )
-
-bash "$CORDOVA_PATH"/lib/cordova clean "$@"
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+PROJECT_PATH=$( cd "$DIR/.." && pwd )
+echo "Cleaning project..."
+ant -f "$PROJECT_PATH/build.xml" clean

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/lib/cordova
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/cordova b/bin/templates/cordova/lib/cordova
deleted file mode 100755
index 9783b37..0000000
--- a/bin/templates/cordova/lib/cordova
+++ /dev/null
@@ -1,386 +0,0 @@
-#!/bin/bash
-#   Licensed to the Apache Software Foundation (ASF) under one
-#   or more contributor license agreements.  See the NOTICE file
-#   distributed with this work for additional information
-#   regarding copyright ownership.  The ASF licenses this file
-#   to you under the Apache License, Version 2.0 (the
-#   "License"); you may not use this file except in compliance
-#   with the License.  You may obtain a copy of the License at
-# 
-#   http://www.apache.org/licenses/LICENSE-2.0
-# 
-#   Unless required by applicable law or agreed to in writing,
-#   software distributed under the License is distributed on an
-#   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-#   KIND, either express or implied.  See the License for the
-#   specific language governing permissions and limitations
-#   under the License.
-
-PROJECT_PATH=$( cd "$( dirname "$0" )/../.." && pwd )
-
-function list_devices {
-    IFS=$'\n'
-    devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print
}}' | grep 'device' | grep -v 'emulator'`
-    device_list=($devices)
-    if [[ ${#device_list[@]} > 0 ]] ; then
-        for i in ${devices[@]}
-        do
-            # remove space and 'device'
-            echo ${i/[^a-zA-Z0-9._]device/}
-        done
-    else
-        echo "No devices found."
-        exit 2
-    fi
-}
-
-function list_started_emulators {
-    IFS=$'\n'
-    devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print
}}' | grep 'device' | grep 'emulator'`
-    emulator_list=($devices)
-    if [[ ${#emulator_list[@]} > 0 ]] ; then
-        for i in ${emulator_list[@]}
-        do
-            # remove space and 'device'
-            echo ${i/[^a-zA-Z0-9._]device/}
-        done
-    else
-        echo "No started emulators found, you can start an emulator by using the command"
-        echo " 'cordova/lib/start-emulator'"
-        exit 2
-    fi
-}
-
-function list_emulator_images {
-    emulator_images=`android list avds | grep "Name:" | cut -f 2 -d ":"`
-    emulator_list=($emulator_images)
-    if [[ ${#emulator_list[@]} > 0 ]] ; then
-        for i in ${emulator_list[@]}
-        do
-            echo ${i/[^a-zA-Z0-9._]/}
-        done
-    else
-        echo "No emulators found, if you would like to create an emulator follow the instructions"
-        echo " provided here : http://developer.android.com/tools/devices/index.html"
-        echo " Or run 'android create avd --name <name> --target <targetID>'
in on the command line."
-        exit 2
-    fi
-}
-
-function start_emulator {
-    emulator_images=`android list avds | grep "Name:" | cut -f 2 -d ":"`
-    # if target emulator is provided
-    if [[ "$#" -eq 1 ]] ; then
-        # check that it exists
-        if [[ $emulator_images =~ $1 ]] ; then
-            #xterm -e emulator -avd $1 &
-            emulator -avd $1 1> /dev/null 2>&1 &
-        else
-            echo "Could not find the provided emulator, make sure the emulator exists"
-            echo " by checking 'cordova/lib/list-emulator-images'"
-            exit 2
-        fi
-    else
-        # start first emulator
-        read -ra emulator_list <<< "$emulator_images"
-        if [[ ${#emulator_list[@]} > 0 ]] ; then
-            #xterm -e emulator -avd ${emulator_list[0]} &
-            emulator -avd ${emulator_list[0]/[^a-zA-Z0-9._-]/} 1> /dev/null 2>&1
&
-        else
-            echo "No emulators found, if you would like to create an emulator follow the
instructions"
-            echo " provided here : http://developer.android.com/tools/devices/index.html"
-            echo " Or run 'android create avd --name <name> --target <targetID>'
in on the command line."
-            exit 2
-        fi
-    fi
-}
-
-function install_device {
-    IFS=$'\n'
-    devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print
}}' | grep 'device' | grep -v 'emulator'`
-    device_list=($devices)
-    if [[ ${#device_list[@]} > 0 ]] ; then
-        apks=`find $PROJECT_PATH/bin -type f -maxdepth 1 | egrep '\.apk$'`
-        apk_list=($apks)
-        if [[ ${#apk_list[@]} > 0 ]] ; then
-            local target
-            # handle target emulator
-            if [[ "$#" -eq 1 ]] ; then
-                # deploy to given target
-                target=${1/--target=/}
-            else
-                # delete trailing space and 'device' after device ID
-                target=${device_list[0]/[^a-zA-Z0-9._]device/}
-            fi
-            echo "Installing ${apk_list[0]} onto device $target..."
-            adb -s $target install -r ${apk_list[0]};
-            echo "Launching application..."
-            local launch_str=$(java -jar "$PROJECT_PATH"/cordova/appinfo.jar "$PROJECT_PATH"/AndroidManifest.xml)
-            adb -s $target shell am start -W -a android.intent.action.MAIN -n $launch_str
-        else
-            echo "Application package not found, could not install to device"
-            echo " make sure your application is built before deploying."
-            exit 2
-        fi
-    else
-        echo "No devices found to deploy to. Please make sure your device is connected"
-        echo " and you can view it using the 'cordova/lib/list-devices' command."
-        exit 2
-    fi
-}
-
-function install_emulator {
-    IFS=$'\n'
-    # check that there is an emulator to deploy to
-    emulator_string=`adb devices | awk '/List of devices attached/ { while(getline > 0)
{ print }}' | grep 'emulator'`
-    emulator_list=($emulator_string)
-    if [[ ${#emulator_list[@]} > 0 ]] ; then
-        apks=`find $PROJECT_PATH/bin -type f -maxdepth 1 | egrep '\.apk$'`
-        apk_list=($apks)
-        if [[ ${#apk_list[@]} > 0 ]] ; then
-            local target
-            # handle target emulator
-            if [[ "$#" -eq 1 ]] ; then
-                # deploy to given target
-                target=${1/--target=/}
-            else
-                # delete trailing space and 'device' after emulator ID
-                target=${emulator_list[0]/[^a-zA-Z0-9._]device/}
-            fi
-            echo "Installing ${apk_list[0]} onto $target..."
-            adb -s $target install -r ${apk_list[0]};
-            echo "Launching application..."
-            local launch_str=$(java -jar "$PROJECT_PATH"/cordova/appinfo.jar "$PROJECT_PATH"/AndroidManifest.xml)
-            adb -s $target shell am start -W -a android.intent.action.MAIN -n $launch_str
-
-        else
-            echo "Application package not found, could not install to device"
-            echo " make sure your application is built before deploying."
-            exit 2
-        fi
-    else
-        echo "No emulators found to deploy to. Please make sure your emulator is started"
-        echo " and you can view it using the 'cordova/lib/list-started-emulators' command."
-        exit 2
-    fi
-}
-
-# cleans the project
-function clean {
-    echo "Cleaning project..."
-    ant clean
-}
-
-# has to be used independently and not in conjunction with other commands
-function log {
-    # filter out nativeGetEnabledTags spam from latest sdk bug.
-    adb logcat | grep -v nativeGetEnabledTags
-}
-
-
-function build {
-    if [[ "$#" -eq 1 ]] ; then
-        if [[ $1 == "--debug" ]] ; then
-            clean
-            ant debug -f "$PROJECT_PATH"/build.xml
-        elif [[ $1 == "--release" ]] ; then
-            clean
-            ant release -f "$PROJECT_PATH"/build.xml
-        elif [[ $1 == "--nobuild" ]] ; then
-            echo "Skipping build..."
-        else
-            echo "Error : Build command '$1' not recognized."
-            exit 2
-        fi
-    else
-        echo "Warning : [ --debug | --release | --nobuild ] not specified, defaulting to
--debug"
-        clean
-        ant debug -f "$PROJECT_PATH"/build.xml
-    fi
-}
-
-
-function wait_for_emulator {
-    emulator_string=`adb devices | awk '/List of devices attached/ { while(getline > 0)
{ print }}' | grep 'device' | grep 'emulator'`
-    old_started=($emulator_string)
-    local new_started
-    local new_emulator_name
-    local i="0"
-    echo -n "Waiting for emulator..."
-    while [ $i -lt 300 ]
-    do
-        emulator_string=`adb devices | awk '/List of devices attached/ { while(getline >
0) { print }}' | grep 'device' | grep 'emulator'`
-        new_started=($emulator_string)
-        if [[ ${#new_started[@]} > ${#old_started[@]} && -z "$new_emulator_name"
]] ; then
-            # get the name of the started emulator
-            local count="0"
-            if [[ ${#old_started[@]} == 0 ]] ; then
-                new_emulator_name=${new_started[$count]/[^a-zA-Z0-9._]device/}
-            else
-                for count in {0...${#old_started[@]}}
-                do
-                    if [[ ! ${new_started[$count]} == ${old_started[$count]} ]] ; then
-                        new_emulator_name=${new_started[$count]/[^a-zA-Z0-9._]device/}
-                    fi
-                done
-                if [[ -z "$new_emulator_name" ]] ; then
-                    count=$[count+1]
-                    new_emulator_name=${new_started[$count]/[^a-zA-Z0-9._]device/}
-                fi
-            fi
-        elif [[ "$new_emulator_name" ]] ; then
-            boot_anim=`adb -s $new_emulator_name shell getprop init.svc.bootanim`
-            if [[ $boot_anim =~ "stopped" ]] ; then
-                break
-            else
-                sleep 1
-                i=$[i+1]
-                echo -n "."
-            fi
-        else
-            sleep 1
-            i=$[i+1]
-            echo -n "."
-        fi
-    done
-    # Device timeout: emulator has not started in time
-    if [ $i -eq 300 ]
-    then
-        echo "emulator timeout!"
-        exit 69
-    else
-        echo "connected!"
-    fi
-}
-
-function run {
-    IFS=$'\n'
-    if [[ "$#" -eq 2 ]] ; then
-        build $2
-        if [[ $1 == "--device" ]] ; then
-            install_device
-        elif [[ $1 == "--emulator" ]] ; then
-            install_emulator
-        elif [[ $1 =~ "--target=" ]]; then
-            install_device $1
-        else
-            echo "Error : '$1' is not recognized as an install option"
-        fi
-    elif [[ "$#" -eq 1 ]] ; then
-        if [[ $1 == "--debug" || $1 == "--release" || $1 == "--nobuild" ]] ; then
-            build $1
-        elif [[ $1 == "--device" ]] ; then
-            install_device
-        elif [[ $1 == "--emulator" ]] ; then
-            install_emulator
-        elif [[ $1 =~ "--target=" ]]; then
-            install_device $1
-        else
-            echo "Error : '$1' is not recognized as an install option"
-        fi
-    else
-        echo "Warning : [ --device | --emulate | --target=<targetID> ] not specified,
using defaults."
-        build
-        devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) {
print }}' | grep 'device' | grep -v 'emulator'`
-        device_list=($devices)
-        emulator_string=`adb devices | awk '/List of devices attached/ { while(getline >
0) { print }}' | grep 'device' | grep 'emulator'`
-        emulator_list=($emulator_string)
-        if [[ ${#device_list[@]} > 0 ]] ; then
-            install_device
-        elif [[ ${#emulator_list[@]} > 0 ]] ; then
-            install_emulator
-        else
-            emulator_images=`android list avds | grep "Name:" | cut -f 2 -d ":"`
-            echo $emulator_images
-            emulator_image_list=($emulator_images)
-            if [[ ${#emulator_image_list[@]} > 0 ]] ; then
-                echo "Starting emulator : ${emulator_image_list[0]}" 
-                emulator -avd ${emulator_image_list[0]/[^.\w]/} 1> /dev/null 2>&1
&
-                wait_for_emulator
-                install_emulator
-            else
-                # TODO : look for emulator images and start one if it's availible
-                echo "Error : there are no availible devices or emulators to deploy to."
-                echo " create an emulator or connect your device to run this command."
-                echo "If you would like to create an emulator follow the instructions"
-                echo " provided here : http://developer.android.com/tools/devices/index.html"
-                echo " Or run 'android create avd --name <name> --target <targetID>'
in on the command line."
-                exit 2
-            fi
-        fi
-    fi
-}
-
-# parse command line arguments
-
-if [[ $# > 3 ]] ; then 
-    echo "Error :  too many arguments."
-    exit 2
-elif [[ $# == 3 ]] ; then
-    if [[ $1 == "run" ]] ; then
-        run $2 $3
-    else
-        echo "Error : too many arguments for '$1'"
-        exit 2
-    fi
-elif [[ $# == 2 ]] ; then
-    if [[ $1 == "run" ]] ; then
-        if [[ $2 == "--emulator" || $2 == "--device" || $2 =~ "--target=" ]] ; then
-            run $2 ''
-        elif [[ $2 == "--debug" || $2 == "--release" || $2 == "--nobuild" ]] ; then
-            run '' $2
-        else 
-            echo "Error : '$2' is not recognized as a run option."
-            exit 2
-        fi
-    elif [[ $1 == "build" ]] ; then
-        build $2
-    elif [[ $1 == "start-emulator" ]] ; then
-        start_emulator $2
-    elif [[ $1 == "install-device" ]] ; then
-        if [[ $2 =~ "--target=" ]] ; then
-            install_device $2
-        else
-            echo "Error : '$2' is not recognized as an install option"
-            exit 2
-        fi
-    elif [[ $1 == "install-emulator" ]] ; then
-        if [[ $2 =~ "--target=" ]] ; then
-            install_emulator $2
-        else
-            echo "Error : '$2' is not recognized as an install option"
-            exit 2
-        fi
-    else
-        echo "Error : '$1' is not recognized as an option that takes arguments"
-        exit 2
-    fi
-elif [[ $# == 1 ]] ; then
-    if [[ $1 == "run" ]] ; then
-        run
-    elif [[ $1 == "build" ]]; then
-        build
-    elif [[ $1 == "clean" ]]; then
-        clean
-    elif [[ $1 == "log" ]]; then
-        log
-    elif [[ $1 == "list-devices" ]]; then
-        list_devices
-    elif [[ $1 == "list-emulator-images" ]]; then
-        list_emulator_images
-    elif [[ $1 == "list-started-emulators" ]]; then
-        list_started_emulators
-    elif [[ $1 == "install-device" ]]; then
-        install_device
-    elif [[ $1 == "install-emulator" ]]; then
-        install_emulator
-    elif [[ $1 == "start-emulator" ]]; then
-        start_emulator
-    else
-        echo "Error : '$1' is not recognized as a tooling command."
-        exit 2
-    fi
-else
-    echo "Error : No command recieved, exiting..."
-    exit 2
-fi

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/lib/install-device
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/install-device b/bin/templates/cordova/lib/install-device
index 604b5ae..e70bef7 100755
--- a/bin/templates/cordova/lib/install-device
+++ b/bin/templates/cordova/lib/install-device
@@ -16,8 +16,34 @@
 # specific language governing permissions and limitations
 # under the License.
 
-set -e
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+PROJECT_PATH=$( cd "$DIR/../.." && pwd )
+device_list=$("$DIR/list-devices")
+if [ $? != 0 ]; then
+    echo "No devices found to deploy to. Please make sure your device is connected"
+    echo " and you can view it using the 'cordova/lib/list-devices' command."
+    exit 2
+fi
 
-CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
-
-bash "$CORDOVA_LIB_PATH"/cordova install-device "$@"
\ No newline at end of file
+apks=`find $PROJECT_PATH/bin -type f -maxdepth 1 | egrep '\.apk$'`
+apk_list=($apks)
+if [[ ${#apk_list[@]} > 0 ]] ; then
+    # handle target
+    read -ra device_array <<< "$device_list"
+    if [[ "$#" -eq 1 ]] ; then
+        # deploy to given target
+        target=${1/--target=/}
+    else
+        # delete trailing space and 'device' after device ID
+        target=${device_array[0]}
+    fi
+    echo "Installing ${apk_list[0]} onto device $target..."
+    adb -s $target install -r ${apk_list[0]};
+    echo "Launching application..."
+    launch_str=$(java -jar "$PROJECT_PATH"/cordova/appinfo.jar "$PROJECT_PATH"/AndroidManifest.xml)
+    adb -s $target shell am start -W -a android.intent.action.MAIN -n $launch_str
+else
+    echo "Application package not found, could not install to device"
+    echo " make sure your application is built before deploying."
+    exit 2
+fi

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/lib/install-emulator
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/install-emulator b/bin/templates/cordova/lib/install-emulator
index 105e2ee..d4bffa4 100755
--- a/bin/templates/cordova/lib/install-emulator
+++ b/bin/templates/cordova/lib/install-emulator
@@ -16,8 +16,35 @@
 # specific language governing permissions and limitations
 # under the License.
 
-set -e
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+PROJECT_PATH=$( cd "$DIR/../.." && pwd )
+emulator_list=$("$DIR/list-started-emulators")
+if [ $? != 0 ]; then
+    echo "No emulators found to deploy to. Please make sure your emulator is started"
+    echo " You can view it using the 'cordova/lib/list-started-emulators' command."
+    echo " You can view created emulator images using the 'cordova/lib/list-emulator-images'
command."
+    echo " You can start an emulator image using the 'cordova/lib/start-emulator' command."
+    exit 2
+fi
 
-CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
-
-bash "$CORDOVA_LIB_PATH"/cordova install-emulator "$@"
\ No newline at end of file
+apks=`find $PROJECT_PATH/bin -type f -maxdepth 1 | egrep '\.apk$'`
+apk_list=($apks)
+if [[ ${#apk_list[@]} > 0 ]] ; then
+    # handle target emulator
+    if [[ "$#" -eq 1 ]] ; then
+        # deploy to given target
+        target=${1/--target=/}
+    else
+        # delete trailing space and 'device' after emulator ID
+        target=${emulator_list[0]}
+    fi
+    echo "Installing ${apk_list[0]} onto emulator $target..."
+    adb -s $target install -r ${apk_list[0]};
+    echo "Launching application..."
+    launch_str=$(java -jar "$PROJECT_PATH"/cordova/appinfo.jar "$PROJECT_PATH"/AndroidManifest.xml)
+    adb -s $target shell am start -W -a android.intent.action.MAIN -n $launch_str
+else
+    echo "Application package not found, could not install to device"
+    echo " make sure your application is built before deploying."
+    exit 2
+fi

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/lib/list-devices
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/list-devices b/bin/templates/cordova/lib/list-devices
index 7a5b2f5..86d0054 100755
--- a/bin/templates/cordova/lib/list-devices
+++ b/bin/templates/cordova/lib/list-devices
@@ -16,8 +16,15 @@
 # specific language governing permissions and limitations
 # under the License.
 
-set -e
-
-CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
-
-bash "$CORDOVA_LIB_PATH"/cordova list-devices
\ No newline at end of file
+devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print }}'
| grep 'device' | grep -v 'emulator' | awk '{ print $1; }'`
+device_list=($devices)
+if [[ ${#device_list[@]} > 0 ]] ; then
+    for i in ${devices[@]}
+    do
+        echo $i
+    done
+    exit 0
+else
+    echo "No devices found."
+    exit 2
+fi

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/lib/list-emulator-images
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/list-emulator-images b/bin/templates/cordova/lib/list-emulator-images
index db8e563..202d0e5 100755
--- a/bin/templates/cordova/lib/list-emulator-images
+++ b/bin/templates/cordova/lib/list-emulator-images
@@ -16,8 +16,17 @@
 # specific language governing permissions and limitations
 # under the License.
 
-set -e
-
-CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
-
-bash "$CORDOVA_LIB_PATH"/cordova list-emulator-images
\ No newline at end of file
+emulator_images=`android list avds | grep "Name:" | cut -f 2 -d ":"`
+emulator_list=($emulator_images)
+if [[ ${#emulator_list[@]} > 0 ]] ; then
+    for i in ${emulator_list[@]}
+    do
+        echo $i
+    done
+    exit 0
+else
+    echo "No emulators found, if you would like to create an emulator follow the instructions"
+    echo " provided here : http://developer.android.com/tools/devices/index.html"
+    echo " Or run 'android create avd --name <name> --target <targetID>' in on
the command line."
+    exit 2
+fi

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/lib/list-started-emulators
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/list-started-emulators b/bin/templates/cordova/lib/list-started-emulators
index 7911763..0d5d5c1 100755
--- a/bin/templates/cordova/lib/list-started-emulators
+++ b/bin/templates/cordova/lib/list-started-emulators
@@ -16,8 +16,17 @@
 # specific language governing permissions and limitations
 # under the License.
 
-set -e
-
-CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
-
-bash "$CORDOVA_LIB_PATH"/cordova list-started-emulators
\ No newline at end of file
+devices=`adb devices | awk '/List of devices attached/ { while(getline > 0) { print  $1;}}'
| grep 'emulator'`
+read -ra emulator_list <<< "$devices"
+if [[ ${#emulator_list[@]} > 0 ]] ; then
+    for i in ${emulator_list[@]}
+    do
+        # remove space and 'device'
+        echo $i 
+    done
+    exit 0
+else
+    echo "No started emulators found, you can start an emulator by using the command"
+    echo " 'cordova/lib/start-emulator'"
+    exit 2
+fi

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/lib/start-emulator
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/lib/start-emulator b/bin/templates/cordova/lib/start-emulator
index 8e8964d..86b14bf 100755
--- a/bin/templates/cordova/lib/start-emulator
+++ b/bin/templates/cordova/lib/start-emulator
@@ -16,8 +16,30 @@
 # specific language governing permissions and limitations
 # under the License.
 
-set -e
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+PROJECT_PATH=$( cd "$( dirname "$0" )/../.." && pwd )
+emulator_images=$("$DIR/list-emulator-images")
+if [ $? != 0 ]; then
+    echo "No emulators found, if you would like to create an emulator follow the instructions"
+    echo " provided here : http://developer.android.com/tools/devices/index.html"
+    echo " Or run 'android create avd --name <name> --target <targetID>' in on
the command line."
+    exit 2
+fi
 
-CORDOVA_LIB_PATH=$( cd "$( dirname "$0" )" && pwd )
-
-bash "$CORDOVA_LIB_PATH"/cordova start-emulator "$@"
\ No newline at end of file
+# if target emulator is provided
+if [[ "$#" -eq 1 ]] ; then
+    # check that it exists
+    if [[ $emulator_images =~ $1 ]] ; then
+        #xterm -e emulator -avd $1 &
+        emulator -avd $1 1> /dev/null 2>&1 &
+    else
+        echo "Could not find the provided emulator '$1', make sure the emulator exists"
+        echo " by checking 'cordova/lib/list-emulator-images'"
+        exit 2
+    fi
+else
+    # start first emulator
+    read -ra emulator_list <<< "$emulator_images"
+    #xterm -e emulator -avd ${emulator_list[0]} &
+    emulator -avd ${emulator_list[0]} 1> /dev/null 2>&1 &
+fi

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/log
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/log b/bin/templates/cordova/log
index 01fe107..f8df9cc 100755
--- a/bin/templates/cordova/log
+++ b/bin/templates/cordova/log
@@ -16,8 +16,5 @@
 # specific language governing permissions and limitations
 # under the License.
 
-set -e
-
-CORDOVA_PATH=$( cd "$( dirname "$0" )/.." && pwd )
-
-bash "$CORDOVA_PATH"/cordova/lib/cordova log "$@"
+# filter out nativeGetEnabledTags spam from latest sdk bug.
+adb logcat | grep -v nativeGetEnabledTags

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/add10758/bin/templates/cordova/run
----------------------------------------------------------------------
diff --git a/bin/templates/cordova/run b/bin/templates/cordova/run
index ec352b0..f47adca 100755
--- a/bin/templates/cordova/run
+++ b/bin/templates/cordova/run
@@ -16,8 +16,109 @@
 # specific language governing permissions and limitations
 # under the License.
 
-set -e
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+PROJECT_PATH=$( cd "$DIR/.." && pwd )
 
-CORDOVA_PATH=$( cd "$( dirname "$0" )" && pwd )
+function wait_for_emulator {
+# TODO: this doesnt seem to work
+    emulator_string=$("$DIR/lib/list-started-emulators")
+    old_started=($emulator_string)
+    local new_started
+    local new_emulator_name
+    local i="0"
+    echo -n "Waiting for emulator..."
+    while [ $i -lt 300 ]
+    do
+        emulator_string=$("$DIR/lib/list-started-emulators")
+        new_started=($emulator_string)
+        if [[ ${#new_started[@]} > ${#old_started[@]} && -z "$new_emulator_name"
]] ; then
+            # get the name of the started emulator
+            local count="0"
+            if [[ ${#old_started[@]} == 0 ]] ; then
+                new_emulator_name=${new_started[$count]}
+            else
+                for count in {0...${#old_started[@]}}
+                do
+                    if [[ ! ${new_started[$count]} == ${old_started[$count]} ]] ; then
+                        new_emulator_name=${new_started[$count]}
+                    fi
+                done
+                if [[ -z "$new_emulator_name" ]] ; then
+                    count=$[count+1]
+                    new_emulator_name=${new_started[$count]}
+                fi
+            fi
+        elif [[ "$new_emulator_name" ]] ; then
+            boot_anim=`adb -s $new_emulator_name shell getprop init.svc.bootanim`
+            if [[ $boot_anim =~ "stopped" ]] ; then
+                break
+            else
+                sleep 1
+                i=$[i+1]
+                echo -n "."
+            fi
+        else
+            sleep 1
+            i=$[i+1]
+            echo -n "."
+        fi
+    done
+    # Device timeout: emulator has not started in time
+    if [ $i -eq 300 ]
+    then
+        echo "emulator timeout!"
+        exit 69
+    else
+        echo "connected!"
+    fi
+}
 
-bash "$CORDOVA_PATH"/lib/cordova run "$@"
+if [[ "$#" -eq 2 ]] ; then
+    $DIR/build $2
+    if [[ $1 == "--device" ]] ; then
+        $DIR/lib/install_device
+    elif [[ $1 == "--emulator" ]] ; then
+        $DIR/lib/install_emulator
+    elif [[ $1 =~ "--target=" ]]; then
+        $DIR/lib/install_device $1
+    else
+        echo "Error : '$1' is not recognized as an install option"
+    fi
+elif [[ "$#" -eq 1 ]] ; then
+    if [[ $1 == "--debug" || $1 == "--release" || $1 == "--nobuild" ]] ; then
+        $DIR/build $1
+    elif [[ $1 == "--device" ]] ; then
+        $DIR/build
+        $DIR/lib/install_device
+    elif [[ $1 == "--emulator" ]] ; then
+        $DIR/build
+        $DIR/lib/install_emulator
+    elif [[ $1 =~ "--target=" ]]; then
+        $DIR/build
+        $DIR/lib/install_device $1
+    else
+        echo "Error : '$1' is not recognized as an install option"
+    fi
+else
+    echo "Warning : [ --device | --emulate | --target=<targetID> ] not specified, using
defaults."
+    #$DIR/build
+    devices=$("$DIR/lib/list-devices")
+    if [ $? = 0 ]; then
+        $DIR/lib/install_device
+    else
+        emulators=$("$DIR/lib/list-started-emulators")
+        if [ $? = 0 ] ; then
+            $DIR/lib/install_emulator
+        else
+            images=$("$DIR/lib/list-emulator-images")
+            if [ $? = 0 ] ; then
+                $DIR/lib/start-emulator
+                wait_for_emulator
+                $DIR/lib/install_emulator
+            else
+                echo "No Android devices attached, nor emulator images available to start.
How are we supposed to do this, then?"
+                exit 2
+            fi
+        fi
+    fi
+fi


Mime
View raw message