#!/bin/sh updates_dir=/data/crdroid_updates if [ ! -f "$1" ]; then echo "Usage: $0 ZIP [UNVERIFIED]" echo "Push ZIP to $updates_dir and add it to Updater" echo echo "The name of ZIP is assumed to have crdroid-VERSION-DATE-TYPE-* as format" echo "If UNVERIFIED is set, the app will verify the update" exit fi zip_path=`realpath "$1"` if [ "`adb get-state 2>/dev/null`" != "device" ]; then echo "No device found. Waiting for one..." adb wait-for-device fi if ! adb root; then echo "Could not run adbd as root" exit 1 fi zip_path_device=$updates_dir/`basename "$zip_path"` if adb shell test -f "$zip_path_device"; then echo "$zip_path_device exists already" exit 1 fi if [ -n "$2" ]; then status=1 else status=2 fi # Assume crdroid-VERSION-DATE-TYPE-*.zip zip_name=`basename "$zip_path"` id=`echo "$zip_name" | sha1sum | cut -d' ' -f1` version=`echo "$zip_name" | cut -d'-' -f2` type=`echo "$zip_name" | cut -d'-' -f4` build_date=`echo "$zip_name" | cut -d'-' -f3 | cut -d'_' -f1` if [ "`uname`" = "Darwin" ]; then timestamp=`date -jf "%Y%m%d %H:%M:%S" "$build_date 23:59:59" +%s` size=`stat -f%z "$zip_path"` else timestamp=`date --date="$build_date 23:59:59" +%s` size=`stat -c "%s" "$zip_path"` fi adb push "$zip_path" "$zip_path_device" adb shell chgrp cache "$zip_path_device" adb shell chmod 664 "$zip_path_device" # Kill the app before updating the database adb shell "killall com.crdroid.updater 2>/dev/null" adb shell "sqlite3 /data/data/com.crdroid.updater/databases/updates.db" \ "\"INSERT INTO updates (status, path, download_id, timestamp, type, version, size)" \ " VALUES ($status, '$zip_path_device', '$id', $timestamp, '$type', '$version', $size)\"" # Exit root mode adb unroot