#! /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. # # update a cordova/android project's command line tools # # USAGE # ./update [path] # set -e if [ -z "$1" ] || [ "$1" == "-h" ] then echo 'usage: update path' echo "Make sure the Android SDK tools folder is in your PATH!" exit 0 fi BUILD_PATH="$( cd "$( dirname "$0" )/.." && pwd )" VERSION=$(cat "$BUILD_PATH"/VERSION) PROJECT_PATH="${1:-'./example'}" if [ ! -d "$PROJECT_PATH" ] then echo "The project path has to exist for it to be updated" exit 0 fi # cleanup after exit and/or on error function on_exit { if [ -f "$BUILD_PATH"/framework/assets/www/cordova-$VERSION.js ] then rm "$BUILD_PATH"/framework/assets/www/cordova-$VERSION.js fi if [ -f "$BUILD_PATH"/framework/cordova-$VERSION.jar ] then rm "$BUILD_PATH"/framework/cordova-$VERSION.jar fi } function createAppInfoJar { (cd "$BUILD_PATH"/bin/templates/cordova/ApplicationInfo && javac ApplicationInfo.java && jar -cfe ../appinfo.jar ApplicationInfo ApplicationInfo.class ) } function on_error { echo "An unexpected error occurred: $previous_command exited with $?" echo "Deleting project..." [ -d "$PROJECT_PATH" ] && rm -rf "$PROJECT_PATH" exit 1 } function replace { local pattern=$1 local filename=$2 # Mac OS X requires -i argument if [[ "$OSTYPE" =~ "darwin" ]] then /usr/bin/sed -i '' -e $pattern "$filename" elif [[ "$OSTYPE" =~ "linux" ]] then /bin/sed -i -e $pattern "$filename" fi } # we do not want the script to silently fail trap 'previous_command=$this_command; this_command=$BASH_COMMAND' DEBUG trap on_error ERR trap on_exit EXIT ANDROID_BIN="${ANDROID_BIN:=$( which android )}" TARGET=$("$ANDROID_BIN" list targets | grep id: | tail -1 | cut -f 2 -d ' ' ) API_LEVEL=$("$ANDROID_BIN" list target | grep "API level:" | tail -n 1 | cut -f 2 -d ':' | tr -d ' ') # check that build targets exist if [ -z "$TARGET" ] || [ -z "$API_LEVEL" ] then echo "No Android Targets are installed. Please install at least one via the android SDK" exit 1 fi # if this a distribution release no need to build a jar if [ ! -e "$BUILD_PATH"/cordova-$VERSION.jar ] && [ -d "$BUILD_PATH"/framework ] then # update the cordova-android framework for the desired target "$ANDROID_BIN" update project --target $TARGET --path "$BUILD_PATH"/framework &> /dev/null if [ ! -e "$BUILD_PATH"/framework/libs/commons-codec-1.7.jar ]; then # Use curl to get the jar (TODO: Support Apache Mirrors) curl -OL http://archive.apache.org/dist/commons/codec/binaries/commons-codec-1.7-bin.zip &> /dev/null unzip commons-codec-1.7-bin.zip &> /dev/null mkdir -p "$BUILD_PATH"/framework/libs cp commons-codec-1.7/commons-codec-1.7.jar "$BUILD_PATH"/framework/libs # cleanup yo rm commons-codec-1.7-bin.zip && rm -rf commons-codec-1.7 fi # compile cordova.js and cordova.jar (cd "$BUILD_PATH"/framework && ant jar &> /dev/null ) fi # copy cordova.js, cordova.jar and res/xml if [ -d "$BUILD_PATH"/framework ] then cp "$BUILD_PATH"/framework/assets/www/cordova-$VERSION.js "$PROJECT_PATH"/assets/www/cordova-$VERSION.js cp "$BUILD_PATH"/framework/cordova-$VERSION.jar "$PROJECT_PATH"/libs/cordova-$VERSION.jar else cp "$BUILD_PATH"/cordova-$VERSION.js "$PROJECT_PATH"/assets/www/cordova-$VERSION.js cp "$BUILD_PATH"/cordova-$VERSION.jar "$PROJECT_PATH"/libs/cordova-$VERSION.jar fi # creating cordova folder and copying run/build/log/launch scripts cp "$BUILD_PATH"/bin/templates/cordova/appinfo.jar "$PROJECT_PATH"/cordova/appinfo.jar cp "$BUILD_PATH"/bin/templates/cordova/cordova "$PROJECT_PATH"/cordova/cordova cp "$BUILD_PATH"/bin/templates/cordova/build "$PROJECT_PATH"/cordova/build cp "$BUILD_PATH"/bin/templates/cordova/release "$PROJECT_PATH"/cordova/release cp "$BUILD_PATH"/bin/templates/cordova/clean "$PROJECT_PATH"/cordova/clean cp "$BUILD_PATH"/bin/templates/cordova/log "$PROJECT_PATH"/cordova/log cp "$BUILD_PATH"/bin/templates/cordova/run "$PROJECT_PATH"/cordova/run