#!/bin/sh

MY_FILE_FORMAT=http://MY_HOSTNAME/STDPATH.IPKNAME_STDVERSION_all.ipk

# Example: If you put your dev IPKs at mojocoder.example.com/dev,
# your latest app is called foobar, and you're at version 0.5.0, you 
# should set:
#
# MY_HOSTNAME=mojocoder.example.com
# STDPATH=dev\\/com.example.mojocoder
# STDVERSION=0.5.0
#
# Then "./homebrew.sh my foobar" will try to download:
# http://mojocoder.example.com/dev/com.example.mojocoder.foobar_0.5.0_all.ipk

MY_HOSTNAME=mojocoder.example.com
STDPATH=dev\\/com.example.mojocoder
STDVERSION=0.5.0

# -------- You shouldn't need to change anything after this ---------

op=install
mine=no
skip=no
ipk=

if [ ! $1 ]; then
	echo "Usage: $0 [uninstall] [my] [skip] package_url"
	exit 1
fi

while [ "$#" != "0" ]; do
	case "$1" in
	'uninstall')
		op=uninstall
		;;
	'install')
		op=install
		;;
	'my')
		mine=yes
		;;
	'skip')
		skip=yes
		;;
	*)
		ipk=$1
	esac
	if [ "$ipk" != "" ]; then
		break
	fi
	shift
done

if [ x"$ipk" == "x" ]; then
	echo "Usage: $0 [uninstall] [my] [skip] package_url"
	exit 1
fi

if [ "$mine" == "yes" ]; then
	IPKNAME=$ipk
	ipk=`echo $MY_FILE_FORMAT | sed s/MY_HOSTNAME/$MY_HOSTNAME/`
	ipk=`echo $ipk | sed s/STDPATH/$STDPATH/`
	ipk=`echo $ipk | sed s/IPKNAME/$IPKNAME/`
	ipk=`echo $ipk | sed s/STDVERSION/$STDVERSION/`
fi

sudo mount -o remount,rw /

if [ "$op" == "uninstall" ]; then
	pkg=`echo $ipk | sed -r s/\.ipk\$//`
	pkg=`echo $pkg | sed -r s/_all\$//`
	pkg=`echo $pkg | sed -r s/_[\.0-9]+\$//`
	sudo ipkg-opt list_installed | awk '{print $1}' | grep $pkg >/dev/null
	pkg_installed=$?
	if [ $pkg_installed == 0 ]; then
		pkgname=`sudo ipkg-opt list_installed | awk '{print $1}' | grep $pkg`
		echo "Removing package $pkgname"
	else
		echo "No such package: $ipk"
		sudo mount -o remount,ro /
		exit 1	
	fi
	
	sudo cp -R /usr/palm/applications/$pkgname /media/internal/$pkgname-backup
	if [ "$?" == "0" ]; then
		echo "Made backup in /media/internal/$pkgname-backup"
		ret=`sudo ipkg remove $pkgname | grep 'No packages removed'`
		ret=$?
		if [ $ret == 0 ]; then
			ret=`sudo ipkg-opt remove $pkgname | grep 'No packages removed'`
			ret=$?
			if [ $ret == 0 ]; then
				echo "Can't find/remove package $pkgname."
				sudo mount -o remount,ro /
				exit 1	
			fi
		fi
	else
		echo "Failed to back up $pkgname; aborting"
		sudo mount -o remount,ro /
		exit 1	
	fi
	echo "Successfully removed $pkgname"
fi


if [ "$op" == "install" ]; then
	wget $ipk
	if [ $? -ne 0 ]; then
		echo "Drat, couldn't retrive $ipk for you. Aborting."
		sudo mount -o remount,ro /
		exit 1
	fi
	sudo ipkg-opt install $ipk
	if [ $? -ne 0 ]; then
		echo "Uh-oh, error installing $ipk!"
		sudo mount -o remount,ro /
		exit 1
	fi
	mv `basename $ipk` ipks
	echo "Successfully installed package"
fi

if [ "$skip" == "yes" ]; then
	echo "Skipping LunaSysMgr restart."
	echo "All done!"
	exit 0
fi

echo "Restarting LunaSysMgr... "

sudo /sbin/stop LunaSysMgr
sudo /sbin/start LunaSysMgr

echo " "
echo "All done! Your Pre should now look like it's rebooting."

exit 0


