#!/bin/bash
#  Ibnu Yahya <ibnu.yahya@toroo.org>

DESTDIR="$HOME/IGNSDK-APP/"
DIR=false
DISTCHK=`cat /etc/ignsdk-dist`
IGNSDKAPP="$HOME/IGNSDK-APP"
HELP=false
LIST=false

if [ ! -d $DESTDIR ];then
	mkdir $DESTDIR
fi

TEMP=`getopt -o hld:p:x: --long help,list,dir:,pkgname:,distribution: -n 'ignsdk-app-builder' -- "$@"`

eval set -- "$TEMP"

help ()
{

cat <<EOF
Usage: ignsdk-app-builder [OPTIONS] [PACKAGE NAME or PROJECT DIRECTORY]

Options:
		
	-p, --pkgname		Project Package name
	-d, --dir		Project directory
	-l, --list		List existing project
	-x, --distribution	Override target distribution (Debian only)

Examples:
		
	$ ignsdk-app-builder --pkgname control-panel

	$ ignsdk-app-builder --dir /home/igos/IGNSDK-APP/control-panel.ign
EOF

exit 0
}

build_project ()
{
	/usr/share/ign-sdk/bin/ignsdk-$DIST-builder $1
}

checkhelp ()
{
	echo "HELP: ignsdk-app-builder --help"
	echo ""
	exit 0
}

if [ $? != 0 ] ; then
	help
fi

if [ $DISTCHK == "debian" -o $DISTCHK == "ign" -o $DISTCHK == "arch" -o $DISTCHK == "slack" ];then
	DIST=$DISTCHK
else
	echo "ERROR : Distribution is not supported!"
	exit 0
fi

eval set -- "$TEMP"

while true; do
	case "$1" in
		-d | --dir )
			if [ ! $2 ]; then
				DIR=false
			else
				if [ -d $2 ]; then
					DIR=true
					PKGBUILD=$2
				else
					echo "ERROR: Directory is not exist!"
					checkhelp
				fi
			fi
			shift 2
			;;
		-p | --pkgname )
			if [ ! $2 ]; then
				DIR=false
			else
				if [ -d $IGNSDKAPP/$2.ign ]; then
					DIR=true
					PKGBUILD=$IGNSDKAPP/$2.ign
				else
					echo "ERROR: Directory is not exist!"
					checkhelp
				fi
			fi
			shift 2
			;;
		-h | --help )
			HELP=true
			shift
			;;
		-l | --list )
			LIST=true
			shift
			;;
		-x | --distribution )
			if [ ! "$2" == "ign" -a $DISTCHK == "debian" ]; then
				echo "Invalid/unsupported distribution: $2"
				exit 1
			else
				DIST=$2
			fi
			shift
			;;
		-- )
			shift
			break
			;;
		* )
			break
			;;
	esac
done

if [ $HELP == true ]
then
	help
fi

if [ $LIST == true ]
then
	cd $DESTDIR
	ls > $DESTDIR/.ignsdk-list 
	echo ""
	echo "Existing project: "
	while read m
	do
		if [ -f $m/ignsdk.json ];then
			echo - $m | sed s/\(.\)ign//g | sed -e "s|$DESTDIR||"
		fi
	done < $DESTDIR/.ignsdk-list
	echo "Usage: ignsdk-app-builder -p [PROJECT PACKAGE NAME]"
	echo ""
	exit 0
fi

if [ $DIR == false ]
then
	echo ""
	echo "You must set either directory path or project name."
	help
else
	build_project $PKGBUILD
fi
