#!/bin/ash
#
# Update, Ver 1.2  John Peters <jpeters> 2009 
# "update --help"  for usage/options info.


TCEDIR="$(cat /opt/.tce_dir)"
 A="$1"
 B="$2"

## Opens dialog box ##
graphic() {
 
 LIST="$(ls $TCEDIR | grep -v .dep | grep -v .md5 | sed 's/[^ ]*/& installed/g' ) "  
 
dialog  \
  --menu  "Choose extension to update" 20 50 10 \
   `echo $LIST ` 2>/tmp/choice
 cat /tmp/choice | sed 's/.tc..//'| sed  's/.tc.//'>/tmp/choice
  
}

# View contents of tce directory
view() {
cd $TCEDIR
ls
}
check() {
[ -f /tmp/update-check ] && sudo rm -R /tmp/update-check 

cd $TCEDIR

# Create {tce,tcz} md5.txt lists
if [ $A == "-c" ]; then
TCE="$(ls | grep txt | grep tce | grep -v tcz)"
TCZ="$(ls | grep txt | grep tcz | grep -v tce)"
elif [ $A == "-d" ]; then 
DEPFILE="$(find ${B}* | grep .dep)" 
TCE="$(cat $DEPFILE | grep -v .tcz)"
TCZ="$(cat $DEPFILE | grep -v .tce)"

TCE="$(echo $TCE | sed 's/[^ ]*/&.md5.txt/g')" 
TCZ="$(echo $TCZ | sed 's/[^ ]*/&.md5.txt/g')" 
fi

# Create work directory
[ -d /tmp/md5 ] ||  mkdir /tmp/md5
cd /tmp/md5

# Download md5.txt files from tcz directory 

TCZFTP="ftp://distro.ibiblio.org/pub/linux/distributions/tinycorelinux/2.x/tcz"

for I in $TCZ
do
sudo wget $TCZFTP/$I  
done

# Download md5.txt files from tce directory
TCEFTP="ftp://distro.ibiblio.org/pub/linux/distributions/tinycorelinux/2.x/tce"

for I in $TCE
do
sudo wget $TCEFTP/$I  
done
# md5check: Results in /tmp/update-check
cd $TCEDIR
for I in $TCE
do
  CK="$(md5sum -c /tmp/md5/$I)"
  echo $CK >>/tmp/update-check
done 

for I in $TCZ
do
  CK="$(md5sum -c /tmp/md5/$I)"
  echo $CK >>/tmp/update-check
done 

echo "***************************************************"
echo "MD5SUM FAILURES...MISSING FILE  OR REQUIRES UPDATE "
echo "***************************************************"
echo "                                                   "
cat /tmp/update-check | grep FAILED 


## Cleanup
sudo rm -R /tmp/md5
}
#######################################
help() {
echo "USAGE: 'update -g' opens dialog box"
echo   "CLI:   'update APP' (eg, 'update gnumeric')"
echo    "Use ONLY base WITHOUT .tcxx ext (eg !update.gnumeric.tcz)"

echo "Options"
echo "   -c         Checks tce dir for updates"        
echo "   -d  APP,   (eg, 'update -d gnumeric') Checks for dep updates"
echo "   -g,         Graphics option"   
echo "   -v,         Views tce directory."
echo "   --help,     This file"
echo "   --version"  
exit 1
}
#########################################
version() {
echo   "Update,  version 1.2  2009 Written by John Peters (jpeters)" 
echo "This is free software: you are free to change and redistribute it."
echo "There is NO WARRANTY, to the extent permitted by law."

}

#### Main Program 

case $1 in
 "-c" )     check; exit 1 ;;
 "--help" ) help; exit 1 ;;
 "--version" ) version; exit 1 ;;
 "-d" )     check; exit 1 ;; 
 "-v" )     view;  exit 1 ;;
 "-g" )     graphic; exec update `cat /tmp/choice`;  exit 1 ;;
esac


# Refer to help menu if {tce*,tcz*} included.
[  $(echo ${1} | grep -v .tcz* | grep -v .tce*) ] || help  

# Delete files
cd $TCEDIR
APP="$(find ${1}.tc* | grep -v .dep | grep -v .txt)" 
sudo rm /usr/local/tce.installed/$1
sudo rm ${1}.* &>/dev/null

### menu ##
[ -e /usr/local/tce.menu/$1 ] &&  sudo sed -i "/$1/d" /usr/local/tce.menu/menu

### wbar #### code adapted from Jason W & hats

	if [ -e /usr/local/tce.icons/$1 ]; then
		LINE1=$(sed -n '1p' /usr/local/tce.icons/$1 | cut -f2 -d: | sed 's:\/:\\/:g')
		LINE2=$(sed -n '2p' /usr/local/tce.icons/$1)
		LINE3=$(sed -n '3p' /usr/local/tce.icons/$1 | cut -f2 -d: | sed 's:\/:\\/:g')
		sudo sed -i "/$LINE1/d" /usr/local/tce.wbar
		sudo sed -i "/$LINE2/d" /usr/local/tce.wbar
		sudo sed -i "/$LINE3/d" /usr/local/tce.wbar
		sudo sed -i '/^$/d' /usr/local/tce.wbar
		sudo chown tc:staff /usr/local/tce.wbar
		if [ -n "`tail -c 1 /usr/local/tce.wbar`" ]; then
		sudo echo >> /usr/local/tce.wbar
		fi
	
	fi
### WGET INSTALL ####

[  $APP ] || exit 1
### bug fix for tce-load ###
case $APP in
 *.tce* ) sed -i 's/tcz/tce/g' /opt/.tcrc ;;
 *.tcz* ) sed -i 's/tce/tcz/g' /opt/.tcrc ;;
esac
tce-load $APP  wget install

[ -f /tmp/choice ] && sudo rm /tmp/choice

