#!/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

PATH="/bb:/bin:/sbin:/usr/bin:/usr/sbin"
export PATH

checkroot
BUILD=`getBuild`
TCEDIR=/etc/sysconfig/tcedir
IMPORT="$TCEDIR"/import
DEBINXDIR="$IMPORT"/debinx
HERE=`pwd`
PKGDIR=/tmp
PKG="$HERE"
CFG="$PKG"/cfg
FILE="$1"
TARGET="$2"
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

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" || exit 1
ar p "$FILE" "$CONFIG_TAR" > "$PKGDIR"/"$CONFIG_TAR" || exit 1
if [ -f /tmp/.keepdoc ] || grep "^$BASENAME$" "$DEBINXDIR"/KEEPDOC > /dev/null 2>&1; then
	tar xf "$PKGDIR"/"$DATA_TAR" -C "$PKG" || exit 1
else
	tar xf "$PKGDIR"/"$DATA_TAR" -C "$PKG" -X "$DEBINXDIR"/KEEPDOCLIST || exit 1
fi
tar xf "$PKGDIR"/"$CONFIG_TAR" -C "$CFG" || exit 1
	
# Set Tiny Core custom script support.
#cd "$PKG"
read IMPORTMIRROR < /opt/tcemirror                                                                             
IMPORTMIRROR="${IMPORTMIRROR%/}/dCore/import"   
		
cd "$DEBINXDIR"
if tar xzf deb2sce.tar.gz "${BASENAME}".deb2sce > /dev/null 2>&1
then
	[ -d "$PKG"/usr/local/sce/"$BASENAME" ] || mkdir -p "$PKG"/usr/local/sce/"$BASENAME"
	## Merging:
	echo ""$pkgNUM"/"$totalPKG" ${YELLOW}${BASENAME}.deb2sce${NORMAL}: dCore start script."
	## Set variable for proper package count echo during import:
	#deb2SCE="TRUE"
	setupStartupScript
	cat "${BASENAME}.deb2sce" > "$PKG/usr/local/tce.installed/${BASENAME}"
	echo ""$BASENAME"-deb2sce: `md5sum ${BASENAME}.deb2sce | cut -f1 -d" "`" >> "$PKG"/usr/local/sce/"$TARGET"/"$TARGET"-data.md5sum
	chmod -R 775 "$PKG/usr/local/tce.installed/"
	chown -R root.staff "$PKG/usr/local/tce.installed/"
	rm "${BASENAME}.deb2sce"
fi

if grep "^$BASENAME"-data: PKGDATAFILEMD5SUMLIST >/dev/null; then
  [ -d "$PKG"/usr/local/sce/"$BASENAME" ] || mkdir -p "$PKG"/usr/local/sce/"$BASENAME"	
  if [ -f "$DEBS"/"$BASENAME"-data.tar.gz ]; then

	if [ `md5sum "$DEBS"/"$BASENAME"-data.tar.gz | cut -f1 -d" "` != `grep "^$BASENAME"-data: PKGDATAFILEMD5SUMLIST | cut -f2 -d" "` ]; then
		echo "Fetching updated "$BASENAME"-data.tar.gz..."
		rm "$BASENAME"-data.tar.gz*  > /dev/null 2>&1
		wget -O "$DEBS"/"$BASENAME"-data.tar.gz "$IMPORTMIRROR"/"$BASENAME"-data.tar.gz || exit 1
	fi


  else
	wget -O "$DEBS"/"$BASENAME"-data.tar.gz -c "$IMPORTMIRROR"/"$BASENAME"-data.tar.gz || exit 1
  fi

  if [ `md5sum "$DEBS"/"$BASENAME"-data.tar.gz | cut -f1 -d" "` == `grep "^$BASENAME"-data: PKGDATAFILEMD5SUMLIST | cut -f2 -d" "` ]; then
    ## Merging:
    echo ""$pkgNUM/$totalPKG" ${YELLOW}"$BASENAME"-data.tar.gz${NORMAL}: "${BASENAME}" extra files."
    echo ""$BASENAME"-data: `grep "^$BASENAME"-data: PKGDATAFILEMD5SUMLIST | cut -f2 -d" "`" >> "$PKG"/usr/local/sce/"$TARGET"/"$TARGET"-data.md5sum
    tar xf "$DEBS"/"$BASENAME"-data.tar.gz -C "$PKG"|| exit 1
  else
    echo "Md5sum failed for "$BASENAME"-data.tar.gz, exiting.."
    exit 1
  fi

fi
cd "$PKG"
	
# 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
rm -r cfg

## Ensure proper echo output when merging deb2sce packages during import session:
if [ "$deb2SCE" == "TRUE" ]; then
	deb2SCE="FALSE"
else
	## Merging:
	echo ""$pkgNUM"/"$totalPKG" ${YELLOW}${BASENAME}${NORMAL}"
fi

#find . -depth | cpio -pmd "$PKG" 2>&1 > /dev/null
#(tar -cf - .) | (cd "$PKG" && tar -xpf -)
if [ "$?" != "0" ]; then
	exit 1
fi	
cd ..

