#!/bin/sh
# (c) Jason Williams 2015
# Create sce from Debian package
# Usage: $ sce-deb2sce debianpackagename.deb
. /etc/init.d/tc-functions
checknotroot

USER=`cat /etc/sysconfig/tcuser`

if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
        echo
	echo "${YELLOW}sce-deb2sce - Convert a single Debian package (*.deb file) into an SCE.${NORMAL}"
	echo "              Useful to import a *.deb file not present in dCore's existing"
	echo "              Debian or Ubuntu repositories. Resulting *.sce and *.sce.md5.txt"
	echo "              files can be moved into /etc/sysconfig/tcedir/sce/ to be"
	echo "              recognized by the system."
	echo " "
	echo "              The SCE and any dependency SCE(s) required to run the software"
	echo "              must be loaded with sceboot.lst, sce-ondemand or sce-load. If"
	echo "              numerous dependencies are required, importing them as a"
	echo "              list file may be easiest, see sce-import --help."
        echo ""
	echo "Usage:"
        echo " "
	echo "${YELLOW}"sce-deb2sce debian_package.deb"${NORMAL}   Convert specified *.deb file into an SCE."
        echo " "
exit 1
fi


if [ -z "$1" ]; then
	echo "You must specify a deb file."
	exit 1
fi

if [ -n "$2" ]; then
	echo "Only one deb file can be used at a time."
	exit 1
fi

HERE=`pwd`
PATH="/bb:/bin:/sbin:/usr/bin:/usr/sbin"
export PATH

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

make_sce() {
	CFG="$PKG"/cfg
	sudo mkdir -p "$CFG"
	DATA_TAR=`sudo ar t "$FILE" data.tar.*`
	CONFIG_TAR=`sudo ar t "$FILE" control.tar.*`
	sudo mkdir -p "$PKG"
	sudo ar p "$FILE" "$DATA_TAR" > "$PKGDIR"/"$DATA_TAR" || exit 1
	sudo ar p "$FILE" "$CONFIG_TAR" > "$PKGDIR"/"$CONFIG_TAR" || exit 1
	sudo tar xf "$PKGDIR"/"$DATA_TAR" -C "$PKG" || exit 1
	sudo tar xf "$PKGDIR"/"$CONFIG_TAR" -C "$CFG" || exit 1
	sudo chown root:staff "$PKG" || exit 1
	sudo chmod 775 "$PKG" || exit 1
	if [ "$KEEPDOC" != "TRUE" ]; then
		[ -d "$PKG"/usr/share/doc ] && sudo rm -r "$PKG"/usr/share/doc
		[ -d "$PKG"/usr/share/man ] && sudo rm -r "$PKG"/usr/share/man
	fi
	
	if [ -f "$HERE"/"$BASENAME".deb2sce ]; then
		#[ -d "$PKG"/usr/local/sce/"$BASENAME" ] || mkdir -p "$PKG"/usr/local/sce/"$BASENAME"
		echo Merging Tiny Core custom start script for ${BASENAME}: "${BASENAME}.deb2sce"
		setupStartupScript
		cat "$HERE"/"$BASENAME".deb2sce | sudo tee "$PKG/usr/local/tce.installed/${BASENAME}"
		echo " " | sudo tee -a "$PKG/usr/local/tce.installed/${BASENAME}"
		echo " "  | sudo tee -a "$PKG/usr/local/tce.installed/${BASENAME}"
		#echo ""$BASENAME"-deb2sce: `md5sum ${BASENAME}.deb2sce | cut -f1 -d" "`" >> "$PKG"/usr/local/sce/"$TARGET"/"$TARGET"-data.md5sum
		sudo chmod -R 775 "$PKG/usr/local/tce.installed/"
		sudo chown -R root.staff "$PKG/usr/local/tce.installed/"
	fi
	cd "$PKG"
	if [ -f "$CFG"/postinst ]; then
		sudo mkdir -p "$PKG/usr/local/postinst"
		sudo cp "$CFG/postinst" "$PKG/usr/local/postinst/${BASENAME}"
		SCRIPT='/usr/local/postinst/'${BASENAME}' configure'
		setupStartupScript
		echo "${SCRIPT}" | sudo tee -a "$PKG/usr/local/tce.installed/${BASENAME}"
		echo " " | sudo tee -a "$PKG/usr/local/tce.installed/${BASENAME}"
		sudo chmod 775 "$PKG/usr/local/tce.installed/${BASENAME}"
		sudo chown -R root.staff "$PKG/usr/local/tce.installed/"
	fi
	[ -d "$CFG" ] && sudo rm -r "$CFG"
	cd "$PKGDIR"
	sudo mksquashfs pkg "$HERE"/"$APPNAME" -noappend
	cd "$HERE"
	sudo md5sum "$APPNAME" > "$APPNAME".md5.txt
	sudo chown "$USER":staff "$APPNAME"*
	sudo rm -r "$PKGDIR"
}

while getopts rk OPTION
do
	case ${OPTION} in
		r) RAM=TRUE ;;
		k) KEEPDOC=TRUE ;;
		*) exit 1 ;;
	esac
done

shift `expr $OPTIND - 1`

FILE="$1"
#echo $FILE
INPUT=${FILE##*.}

BASENAME=`basename "$FILE" .deb`
APPNAME="$BASENAME".sce

if [ "$RAM" == "TRUE" ]; then
	PKGDIR=/tmp/deb2sce.1234
else 	
	PKGDIR=/etc/sysconfig/tcedir/import/deb2sce.1234
fi

[ -d /tmp/deb2sce.1234 ] && sudo rm -r /tmp/deb2sce.1234
[ -d /etc/sysconfig/tcedir/import/deb2sce.1234 ] && sudo rm -r /etc/sysconfig/tcedir/import/deb2sce.1234

[ -d "$PKGDIR" ] || sudo mkdir -p "$PKGDIR"
sudo chown "$USER":staff "$PKGDIR"

PKG="$PKGDIR"/pkg

if [ ! -f "$FILE" ]; then
	echo "$FILE does not exist, exiting.."
	exit 1
fi

if [ ! "$INPUT" == "deb" ] ; then
	echo "Only Debian packages work with this."
	exit 1
else
	make_sce
fi

[ -d /tmp/deb2sce.1234 ] && sudo rm -r /tmp/deb2sce.1234
[ -d /etc/sysconfig/tcedir/import/deb2sce.1234 ] && sudo rm -r /etc/sysconfig/tcedir/import/deb2sce.1234
	
if [ -f "$APPNAME" ]; then
	echo "Success."
else
	echo "Something went wrong."
fi

