#!/bin/sh
#(c) Robert Shingledecker 2004-2008
# tcz concept and code from Jason Williams
#
# Example usage: 
# tce-load /mnt/hda1/tce/optional/nano.tce   Loads local extension
# tce-load nano.tce wget install             Download into tce directory and installs
# tce-load nano.tce wget                     Download only into tce directory
. /etc/init.d/tc-functions
#
DOWNLOAD_DIR=`cat /opt/.tce_dir`
TCEINSTALLED=/usr/local/tce.installed

install(){
  if [ "$3" == "install" ] || [ -z "$2" ]; then
    THISAPP="$1"
    case "$THISAPP" in
       *.tce*)
          APPNAME=$(getbasefile "$THISAPP" 1)
          sudo tar -C / -zxf $THISAPP;sync
          if [ "$PWD" == "/tmp/tce" ]  && [ `basename "$THISAPP"` == "$THISAPP" ]; then
             rm "$THISAPP"
             rm "$THISAPP".md5.txt
          fi   
          EXT=${THISAPP##*.}
          case "$EXT" in *m*) sudo /sbin/depmod -a 2>/dev/null ;; esac
          case "$EXT" in *l*) sudo /sbin/ldconfig 2>/dev/null ;; esac
          if [ -x "$TCEINSTALLED"/"$APPNAME" ]; then
             "$TCEINSTALLED"/"$APPNAME"
          else
             touch "$TCEINSTALLED"/"$APPNAME"
          fi
          desktop.sh "$APPNAME"
          ;;
        *.tcz*)
           APPNAME=$(getbasefile "$THISAPP" 1)
           [ -d /tmp/tcloop/"$APPNAME" ] || sudo mkdir -p /tmp/tcloop/"$APPNAME"
	   cat /etc/mtab | grep -i "/tmp/tcloop/"$APPNAME"" > /dev/null 2>&1 || sudo mount "$THISAPP" /tmp/tcloop/"$APPNAME" -o loop 
	
	find /tmp/tcloop/"$APPNAME" -type d | cut -f5- -d/ | sudo xargs -i mkdir -p /'{}' 
	   
	#for D in `find /tmp/tcloop/"$APPNAME" -type d -maxdepth 6`; do
	#   DIR=`echo $D|cut -f5- -d/`; DIR="/$DIR"
	#   [ -d "DIR" ] || sudo mkdir -p "$DIR"
	#   done
	
	   if [ "$2" == force ]; then
		
		find /tmp/tcloop/"$APPNAME" -not -type d | cut -f5- -d/ | sudo xargs -i ln -f -s /tmp/tcloop/"$APPNAME"/'{}' /'{}' > /dev/null 2>&1  
	 else
		find /tmp/tcloop/"$APPNAME" -not -type d | cut -f5- -d/ | sudo xargs -i ln -s /tmp/tcloop/"$APPNAME"/'{}' /'{}' > /dev/null 2>&1
		

	   fi
		
	
	   if [ -f /tmp/tcloop/"$APPNAME"/user.tar.gz ]; then
		sudo tar xzf /tmp/tcloop/"$APPNAME"/user.tar.gz -C / > /dev/null 2>&1
           fi
	
           EXT=${THISAPP##*.}
           case "$EXT" in *m*) sudo /sbin/depmod -a 2>/dev/null ;; esac
           case "$EXT" in *l*) sudo /sbin/ldconfig 2>/dev/null ;; esac
           if [ -x "$TCEINSTALLED"/"$APPNAME" ]; then
             "$TCEINSTALLED"/"$APPNAME"
           else
             touch "$TCEINSTALLED"/"$APPNAME"
           fi
 	   if [ -d /tmp/tcloop/"$APPNAME"/usr/local/tce.menu ]; then

 		if [ `ls -l /tmp/tcloop/"$APPNAME"/usr/local/tce.menu | wc -l` -gt "1" ] ; then    
        		for item in `ls /tmp/tcloop/"$APPNAME"/usr/local/tce.menu`; do
        		desktop.sh $item
        		done
        	else
			desktop.sh "$APPNAME"
		fi
	   fi
       ;;
    esac
  fi
}

if [ -n "$1" ]; then
   APP="$1"
else
   dialog --title "Specify TCE Extensions" --inputbox "Enter extension, e.g. /mnt/hda3/optional/myapp.tce" 0 0 2>/tmp/tce.app
   APP=$(cat /tmp/tce.app)
   if [ ! -n "$APP" ]; then
      exit 1
   fi
fi
if [ "$2" == "wget" ]; then
   MIRROR=`awk '/Mirror/ {print $2}' /opt/.tcrc`
   PROTOCOL=`awk '/Protocol/ {print $2}' /opt/.tcrc`
   cd "$DOWNLOAD_DIR"
   EXTENSION=`basename "$APP"`
   
   DEPLIST="$EXTENSION".dep
   wget -q "$PROTOCOL"://"$MIRROR"/"$DEPLIST" 2>/dev/null
   if [ "$?" == 0 ]; then 
      for F in `cat "$DEPLIST"`; do
         if [ ! -f /usr/local/tce.installed/"${F%.*}" ]; then
            wget -q "$PROTOCOL"://"$MIRROR"/"$F".md5.txt
            if [ -z "$DISPLAY" ]; then
              wget "$PROTOCOL"://"$MIRROR"/"$F"
            else
              aterm +tr -bg white -fg black -geometry 80x4 -e wget "$PROTOCOL"://"$MIRROR"/"$F" 2>/dev/null
            fi
            busybox md5sum -cs "$F".md5.txt
            if [ $? != 0 ]; then
               cd ~; exit 1;
            else
               install "$F" "$2" "$3"
            fi
         fi
      done
      rm "$DEPLIST"
   fi
    
   wget -q "$PROTOCOL"://"$MIRROR"/"$EXTENSION".md5.txt
   if [ -z "$DISPLAY" ]; then
     wget "$PROTOCOL"://"$MIRROR"/"$EXTENSION"
   else
     aterm +tr -bg white -fg black -geometry 80x4 -e wget "$PROTOCOL"://"$MIRROR"/"$EXTENSION" 2>/dev/null
   fi
   busybox md5sum -cs "$EXTENSION".md5.txt
   if [ $? != 0 ]; then
      cd ~; exit 1;
   fi
fi   
#
if [ ! -f "$APP" ]; then 
   echo "$APP not found!"
   cd ~; exit 1
fi
install "$APP" "$2" "$3"
cd ~
