#!/bin/bash
# meta-sprint-pre-2.1.0 script by Rod Whitby
# based on meta-meta script by Ed Cates
# intended to flash Sprint Pre phones with a working webOS 2.1 image
#  Your mileage may vary

[ -d scripts ] || { echo "Run the script from the meta-doctor directory, not the scripts directory" ; exit ; }

W145_JAR_URL="http://palm.cdnetworks.net/rom/pre/p145r0d08102010/spr1ntp145rod/webosdoctorp100ewwsprint.jar"
CDMA_JAR_URL="http://palm.cdnetworks.net/rom/pre2/p201r0d02172011/ver1z0np201rod/webosdoctorp102verizonwireless.jar"
W210_JAR_URL="http://palm.cdnetworks.net/rom/preplus/p210r0d03142011/eudep210rod/webosdoctorp101ueu-wr.jar"

W145_FILE="webosdoctorp100ewwsprint-1.4.5.jar"
CDMA_FILE="webosdoctorp102verizonwireless-2.0.1.jar"
W210_FILE="webosdoctorp101ueu-wr-2.1.0.jar"

W145_BUILD="pre-p100eww-sprint-1.4.5"
CDMA_BUILD="pre2-p102eww-verizonwireless-2.0.1"
W210_BUILD="preplus-p101ueu-wr-2.1.0"

W145_MD5="a55a377dd38fd7a8e94ba9514e1d9e18"
CDMA_MD5="643824a4c103e266fd8e2760b098815c"
W210_MD5="03566ac546d72c59d1cdc1af5a4da920"

PATIENT="meta-sprint-pre-2.1.0"

git="git"
wget="wget"
make="make"
java="java"
patch="patch"
tar="tar"
python="python"

if [ "`uname -s`" == "Darwin" ] ; then 
    tar=gnutar
    export COPYFILE_DISABLE=true
    export COPY_EXTENDED_ATTRIBUTES_DISABLE=true
fi

WEBOS_TARBALL="webOS.tar"
CARRIER_TARBALL="carrier.tar"
SRC_CDMA_FW="roadrunnercdma_fw.tar"
CDMA_FW="castlecdmafw.tar"
BLD_INFO="palm-build-info"

rm -f ${CDMA_FW} ${WEBOS_TARBALL} ${CARRIER_TARBALL} ${BLD_INFO} ${BLD_INFO}-unmasqed

for f in $git $wget $make $java $patch $python $tar ; do
	
    which $f > /dev/null || { echo "Cannot find $f.  Please install it." ; exit ; }

done

ARGS=
SPRINT_IPKS="\
dmtree-sprint_*.ipk \
com.handson.app.nascar_*.ipk \
com.handson.app.nfl_*.ipk \
com.palm.app.sprintportal_*.ipk \
mobitv-sprint-rtspsrc_*.ipk \
com.mobitv.app.sprinttv_*.ipk \
"

if [ "$1" = "--wifi-only" ] ; then
    ARGS="BYPASS_ACTIVATION=1 BYPASS_FIRST_USE_APP=1 DISABLE_MODEM_UPDATE=1"
    SPRINT_IPKS=
fi

ARGS="${ARGS} ENABLE_DEVELOPER_MODE=1 DISABLE_UPLOAD_DAEMON=1 DISABLE_UPDATE_DAEMON=1 CUSTOM_CARRIER_LIST=Sprint CUSTOM_MODEL_LIST=P100EWW CUSTOM_WEBOS_TARBALL=${WEBOS_TARBALL} CUSTOM_CARRIER_TARBALL=${CARRIER_TARBALL} PATIENT=${PATIENT} VERSION=2.1.0 DEVICE=preplus CARRIER=wr"

SPRINT_IPKS="${SPRINT_IPKS} \
crotest-images_*.ipk \
audiod-config-cdma_*.ipk \
"

WR_IPKS="\
palmcustomizationinfo-wr-castle-plus_*.ipk \
sweatshop-wr-castle_*.ipk \
pmvoicecommand_*.ipk \
contacts.plugin.pmvoicecommand_*.ipk \
pmvoicecommand-dede_*.ipk \
pmvoicecommand-engb_*.ipk \
pmvoicecommand-enus_*.ipk \
pmvoicecommand-eses_*.ipk \
pmvoicecommand-esmx_*.ipk \
pmvoicecommand-frca_*.ipk \
pmvoicecommand-frfr_*.ipk \
pmvoicecommand-itit_*.ipk \
"

$make ${ARGS} settings

echo
echo "Your custom doctor file will be created at build/${PATIENT}/${W210_FILE}"
echo

mkdir -p downloads

[ ! -f downloads/${W145_FILE} ] && $wget -c ${W145_JAR_URL} -O downloads/${W145_FILE}
[ ! -f downloads/${CDMA_FILE} ] && $wget -c ${CDMA_JAR_URL} -O downloads/${CDMA_FILE}
[ ! -f downloads/${W210_FILE} ] && $wget -c ${W210_JAR_URL} -O downloads/${W210_FILE}

[ $(md5sum downloads/${W145_FILE} | cut -d \  -f 1) != ${W145_MD5} ] && \
	echo "${W145_FILE} did not download properly.  Please run this script again." && \
	rm -f downloads/${W145_FILE} && exit
[ $(md5sum downloads/${CDMA_FILE} | cut -d \  -f 1) != ${CDMA_MD5} ] && \
        echo "${CDMA_FILE} did not download properly.  Please run this script again." && \
        rm -f downloads/${CDMA_FILE} && exit
[ $(md5sum downloads/${W210_FILE} | cut -d \  -f 1) != ${W210_MD5} ] && \
        echo "${W210_FILE} did not download properly.  Please run this script again." && \
        rm -f downloads/${W210_FILE} && exit

# $make clobber

$make VERSION=1.4.5 DEVICE=pre CARRIER=sprint unpack || exit
$make VERSION=2.0.1 DEVICE=pre2 CARRIER=verizonwireless unpack || exit
$make VERSION=2.1.0 DEVICE=preplus CARRIER=wr unpack || exit

cp build/${W210_BUILD}/resources/${WEBOS_TARBALL} ./

cp build/${CDMA_BUILD}/webOS/${SRC_CDMA_FW} ${CDMA_FW}

$tar -C ./ -f ./${WEBOS_TARBALL} --delete ./${CDMA_FW} || exit
$tar -C ./ -f ./${WEBOS_TARBALL} --append ./${CDMA_FW} || exit

mkdir -p carrier

( cd build/${W145_BUILD}/carrier ; \
    $tar -c -f - ${SPRINT_IPKS} ) | ( cd carrier ; $tar -x -v -f - )
( cd build/${W210_BUILD}/carrier ; \
    $tar -c -f - installer.xml ${WR_IPKS} ) | ( cd carrier ; $tar -x -v -f - )
( cd carrier ; $tar -c -f ../${CARRIER_TARBALL} installer.xml ${SPRINT_IPKS} ${WR_IPKS} )

rm -rf carrier

$make ${ARGS} clobber-build all || exit

$java -jar build/${PATIENT}/${W210_FILE}

rm -f ${CDMA_FW} ${WEBOS_TARBALL} ${CARRIER_TARBALL}
