#!/bin/bash

# Creates tar.xz archive
# Created: 2017.08.06.18:15
# Author: Kārlis Kalviškis <eko@lanet.lv>
# License: GPLv3


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

echo 
echo `eval_gettext 'Creates an TAR.XZ archive'`
echo `eval_gettext 'Symbolic links are preserved.'`
type -P tar &>/dev/null || { echo  "`eval_gettext 'Command'` 'tar' `eval_gettext 'is missing'`"; exit 1; }
if [ ! -t 1 ]; then
	type -P zenity &>/dev/null || { xterm -hold -e echo  "`eval_gettext 'Command'` 'zenity' `eval_gettext 'is missing'`"; exit 1; }
fi
echo

if [ $# -gt 0 ]; then
	for parametrs in $*
	do
		case $parametrs in
			-h | --help ) echo `eval_gettext 'Usage'`: $0  [-h][-y] `eval_gettext 'source'` [`eval_gettext 'destination'`]
				echo -e '\t-h|--help – '`eval_gettext 'this help file'`.
				echo -e '\t-y – '`eval_gettext 'No question is asked'`.
				exit
				;;
			-y ) noquestion=true
				;;
			-* ) echo `eval_gettext 'Unknown parameter '` $parametrs
				exit 1
				;;
			* ) if [ -z $FROMDIR ]; then
					FROMDIR=${parametrs%\/}
				else
					KURKOPEET=$parametrs
				fi
				;;
		esac
	done
else
	if [ -t 1 ]; then
		echo 
		echo `eval_gettext 'Missing parameters. Usage:'`
		echo $0 [-y] [-h] `eval_gettext 'source'` [`eval_gettext 'destination'`]
		echo 
		exit 2
	else
		zenity  --warning --text="`eval_gettext 'Missing parameters. Usage:'`\n$0 [-y] [-h] `eval_gettext 'source'` [`eval_gettext 'destination'`]"
		exit 2
	fi
fi

: ${KURKOPEET:=$FROMDIR}
KURKOPEET=$(echo $KURKOPEET.tar.xz)
if [ ! -t 1 ]; then
	noquestion=true
fi


veido ()
{
	if [ -t 1 ]; then
		tar -cJ --checkpoint=27 $1/ > $2
	else
		(echo "0"
			tar -cJ $1/ >$2
			echo "100") \
			| zenity --progress --pulsate --title="$0" --text="$1 > $2" --auto-close --auto-kill --no-cancel
	fi
}
zinjo ()
{
	if [ -t 1 ]; then
		echo $1
	else
		zenity  --warning --text="$1"
	fi
}

if [ -d $FROMDIR ]; then
	if [ -a $KURKOPEET ]; then
		zinjo "$(echo `eval_gettext 'Error'`: `eval_gettext 'file'` $KURKOPEET `eval_gettext 'exist'`)"
		exit 1
	fi
	echo `eval_gettext 'Input:'` $FROMDIR
	echo `eval_gettext 'Output:'` $KURKOPEET
	if [[ $noquestion == true ]]; then
		veido $FROMDIR $KURKOPEET
	else
		echo `eval_gettext 'Process the files? (Y/N)'`
		while true; do
			read yn
			case $yn in
				[YyJj]* ) veido $FROMDIR $KURKOPEET; break
					;;
				[Nn]* ) exit
					;;
				* ) echo `eval_gettext '(Y)es or (N)o?.'`
					;;
			esac
		done
	fi
else
	zinjo "$(echo `eval_gettext 'Error'`: $FROMDIR `eval_gettext 'not a directory'`)"
	exit 1
fi

