#!/bin/busybox ash
# From concepts of deb2tcz by Jason Williams
# Enhanced for Arm ports by Robert Shingledecker
# postinst / TC customization script support by Brian Smith
# Create sce by merging Debian package together with dependencies
# Usage: $ debExtract packagename.deb

. /etc/init.d/tc-functions
useBusybox
checkroot
BUILD=`getBuild`
TCEDIR=/etc/sysconfig/tcedir
HERE=`pwd`
PKGDIR=/tmp/debex.$$
PKG="$PKGDIR"/pkg
CFG="$PKGDIR"/cfg
FILE="$1"
BASENAME="${FILE%%_*}"
BASENAME="${BASENAME##/*/}"
DEBS="$TCEDIR"/import/debs

setupStartupScript() {
	[ -d "$PKG"/usr/local/tce.installed ] || mkdir -p "$PKG/usr/local/tce.installed/"
	chmod 775 "$PKG/usr/local/tce.installed/"
	chown root.staff "$PKG/usr/local/tce.installed/"
}

[ -z "$1" ] && echo "You must specify a file."
if [ "${FILE##*.}" != "deb" ] ; then
	echo "Only Debian packages work with this." 
	exit 1
fi
[ -d "$PKGDIR" ] || mkdir -p "$PKGDIR"

mkdir -p "$PKG"
mkdir -p "$CFG"
DATA_TAR=`ar t "$FILE" data.tar.*`
CONFIG_TAR=`ar t "$FILE" control.tar.*`
ar p "$FILE" "$DATA_TAR" > "$PKGDIR"/"$DATA_TAR"
ar p "$FILE" "$CONFIG_TAR" > "$PKGDIR"/"$CONFIG_TAR"
tar xf "$PKGDIR"/"$DATA_TAR" -C "$PKG"
tar xf "$PKGDIR"/"$CONFIG_TAR" -C "$CFG"
[ -d "$PKG"/usr/share/doc ] && rm -r "$PKG"/usr/share/doc
[ -d "$PKG"/usr/share/man ] && rm -r "$PKG"/usr/share/man
[ -d "$PKG"/usr/share/menu ] && rm -r "$PKG"/usr/share/menu
[ -d "$PKG"/usr/share/lintian ] && rm -r "$PKG"/usr/share/lintian
	
# Set Tiny Core custom script support.
cd "$PKGDIR"
read IMPORTMIRROR < /opt/tcemirror                                                                             
IMPORTMIRROR="${IMPORTMIRROR%/}/$(getMajorVer).x/import"   
	
wget -O /tmp/"${BASENAME}.deb2sce" -cq "$IMPORTMIRROR"/"${BASENAME}.deb2sce" 2>/dev/null		
if [ -f /tmp/"${BASENAME}.deb2sce" ]
then
	echo Merging Tiny Core custom start script for ${BASENAME}: "${BASENAME}.deb2sce"
	setupStartupScript
	cat /tmp/"${BASENAME}.deb2sce" > "$PKG/usr/local/tce.installed/${BASENAME}"
	chmod -R 775 "$PKG/usr/local/tce.installed/"
	chown -R root.staff "$PKG/usr/local/tce.installed/"
	rm /tmp/"${BASENAME}.deb2sce"
fi

if grep "^${BASENAME}-data.tar.gz" /tmp/.pkgextrafiles >/dev/null; then
cd "$DEBS"
  if [ -f "${BASENAME}"-data.tar.gz  ]; then
	[ -f "${BASENAME}"-data.tar.gz.md5.txt ] && rm "${BASENAME}"-data.tar.gz.md5.txt
	wget -O "${BASENAME}"-data.tar.gz.md5.txt "$IMPORTMIRROR"/"${BASENAME}"-data.tar.gz.md5.txt > /dev/null 2>&1

	if ! md5sum -c "${BASENAME}"-data.tar.gz.md5.txt > /dev/null 2>&1; then
        	echo "Fetching updated extra files for "${BASENAME}": "${BASENAME}"-data.tar.gz"
	    	rm "${BASENAME}"-data.tar.gz*
  		wget -O "${BASENAME}"-data.tar.gz -c "$IMPORTMIRROR"/"${BASENAME}"-data.tar.gz 
  		wget -O "${BASENAME}"-data.tar.gz.md5.txt -c "$IMPORTMIRROR"/"${BASENAME}"-data.tar.gz.md5.txt 	
  	fi

  else
	[ -f rm "$DEBS"/"${BASENAME}"-data.tar.gz ] && rm rm "$DEBS"/"${BASENAME}"-data.tar.gz
	[ -f rm "$DEBS"/"${BASENAME}"-data.tar.gz.md5.txt ] && rm rm "$DEBS"/"${BASENAME}"-data.tar.gz.md5.txt
	wget -O "$DEBS"/"${BASENAME}"-data.tar.gz -c "$IMPORTMIRROR"/"${BASENAME}"-data.tar.gz 
  	wget -O "$DEBS"/"${BASENAME}"-data.tar.gz.md5.txt -c "$IMPORTMIRROR"/"${BASENAME}"-data.tar.gz.md5.txt 	
  fi

  if md5sum -c "${BASENAME}"-data.tar.gz.md5.txt >/dev/null
  then
    echo "Merging extra files for "${BASENAME}": "${BASENAME}-data".tar.gz"
    tar xf "${BASENAME}-data.tar.gz" -C "$PKG"
  else
    echo "Md5sum failed for "${BASENAME}"-data.tar.gz, exiting..."
    exit 1
  fi
  cd "$HERE"
fi

	
# Setup Debian postinst script.
cd "$PKG"
#find . -type d -empty | xargs rmdir > /dev/null 2>&1
busybox find . -mindepth 1 -depth -type d -exec rmdir '{}' + 2>/dev/null

if [ -f "$CFG"/postinst ]; then
	mkdir -p "$PKG/usr/local/postinst"
	cp "$CFG/postinst" "$PKG/usr/local/postinst/${BASENAME}"
#	SCRIPT='/usr/local/postinst/'${BASENAME}' configure 2>/dev/null'
	SCRIPT='/usr/local/postinst/'${BASENAME}' configure'
	setupStartupScript
	echo "${SCRIPT}" >> "$PKG/usr/local/tce.installed/${BASENAME}"
	chmod 775 "$PKG/usr/local/tce.installed/${BASENAME}"
	chown -R root.staff "$PKG/usr/local/tce.installed/"
fi

#	cd pkg
echo "Merging $BASENAME "
#find . -depth | cpio -pmd "$HERE" 2>&1 > /dev/null
(tar -cf - .) | (cd "$HERE" && tar -xpf -)	
cd "$HERE"
rm -r "$PKGDIR"
