#!/usr/bin/sh

# Extract all DBM files from the given directory
# Created: 2016.05.10.04:09
# Author: Kārlis Kalviškis <eko@lanet.lv>
# License: GPLv3

# For translation
export TEXTDOMAIN="karlo-scripts"
. gettext.sh

echo `eval_gettext 'Extract all'` DEB `eval_gettext 'files from the given directory'`

type -P ar &>/dev/null || { echo  "`eval_gettext 'Command'` 'ar' `eval_gettext 'is missing'`"; exit 1; }
type -P tar &>/dev/null || { echo  "`eval_gettext 'Command'` 'tar' `eval_gettext 'is missing'`"; exit 1; }

UnPack()
# The existence of the second argument forces to create directories for each archive
{
	typeset direktorija
	typeset pdir
	if [ $# -gt 1 ]; then
		direktorija=${1%????}
		mkdir $direktorija
		pdir="--directory=$direktorija"
	fi
	echo "***************** `eval_gettext 'Extracting'` $1"
	ar p $1 data.tar.gz | tar zx $pdir
}


direktorija=''
paziime='*.deb'
skaits=0
if [ $# -gt 0 ]; then
	for parametrs in $*
	do
		case $parametrs in
			-h | --help ) echo `eval_gettext 'Usage'`': $0 [-d] [-h\|--help] [file] [file] ...'
				echo `eval_gettext 'Without any parameters, the script will unpack all'` DEB `eval_gettext 'files'`.
				echo -e '\t-d – '`eval_gettext 'each'` DEB `eval_gettext 'file will be pack in its own directory'`.
				echo -e '\t-h|--help – '`eval_gettext 'this help file'`.
				echo -e '\tfile – DEB '`eval_gettext 'file to be unpacked'`.
				exit
				;;
			-d ) direktorija='d'
				;;
			-* ) echo `eval_gettext 'Unknown parameter'` " $parametrs"
				exit 1
				;;
			* ) if [[ $parametrs = *\?* || $parametrs = *\** ]]; then
					paziime=$parametrs
				else
					pfails='true'
					pfaili[skaits++]=$parametrs
				fi
				;;
		esac
	done
fi
if [ -z $pfails ]; then
# No file name or file name with wild-cards is used
	for f in $paziime
	do
		if [ -f $f ] ; then
			UnPack $f $direktorija
		else
			echo `eval_gettext 'File'` $f `eval_gettext 'is missing'` 
		fi
	done
	exit
else
# File name is used
	for pfails in ${pfaili[@]}
	do
		if [ -f $pfails ] ; then
			UnPack $pfails $direktorija
		else
			echo  `eval_gettext 'Cannot find '` $pfails 
		fi
	done
	exit
fi
