#!/bin/bash
#JKA - ZIP
#A script for de/compress files and folders in many formats
#Author: JKA Network - contacto@jkanetwork.com
#Function decompress(); decompress the file whith the format especified

# gettext initialization
export TEXTDOMAIN='jkazip'
export TEXTDOMAINDIR='/usr/share/locale'

function decompress() {
	msg_de=""$(gettext "%s has been decompressed")" "$2""
	if [ $files -eq 0 ];then
		format=$(ls $2 | cut -f2 -d".")
		format2=$(ls $2 | cut -f3 -d".")
	else
		format=$(echo $1 | cut -f1 -d".")
		format2=$(echo $1 | cut -f2 -d".")
	fi
	if [ $format = "tar" ];then
		if [ -z $format2 ];then
			tar xvf $2
			if [ $? -eq 0 ];then
				printf -- $msg_de
				echo
			fi
		elif [ $format2 = "gz" ];then
			tar xvzf $2
			if [ $? -eq 0 ];then
				printf -- $msg_de
				echo
			fi
		elif [ $format2 = "bz2" ];then
			tar xvjf $2
			if [ $? -eq 0 ];then
				printf -- $msg_de
				echo
			fi
		elif [ $format2 = "xz" ];then
			tar xvJf $2
			if [ $? -eq 0 ];then
				printf -- $msg_de
				echo
			fi
		elif [ $format2 = "lz" ];then
			tar cvf $2 --lzip
			if [ $? -eq 0 ];then
				printf -- $msg_de
				echo
			fi
		fi
	elif [ $format = "tlz" ];then
		tar cvf $2 --lzip
		if [ $? -eq 0 ];then
			printf -- $msg_de
			echo
		fi
	elif [ $format = "tbz2" ];then
		tar xvjf $2
		if [ $? -eq 0 ];then
			printf -- $msg_de
			echo
		fi
	elif [ $format = "tgz" ];then
		tar xvzf $2
		if [ $? -eq 0 ];then
			printf -- $msg_de
			echo
		fi
	elif [ $format = "txz" ];then
		tar xvJf $2
		if [ $? -eq 0 ];then
			printf -- $msg_de
			echo
		fi
	elif [ $format = "7z" -o $format = "7zip" ];then
		7z e $2
		if [ $? -eq 0 ];then
			printf -- $msg_de
			echo
		fi
	elif [ $format = "zip" ];then
		unzip $2
		if [ $? -eq 0 ];then
			printf -- $msg_de
			echo
		fi
	elif [ $format = "gz" -o $format = "gzip" ];then
		gzip -dk $2
		if [ $? -eq 0 ];then
			printf -- $msg_de
			echo
		fi
	elif [ $format = "bz2" -o $format = "bzip" ];then
		bzip2 -dk $2
		if [ $? -eq 0 ];then
			printf -- $msg_de
			echo
		fi
	elif [ $format = "rar" ];then
		unrar x $2
		if [ $? -eq 0 ];then
			printf -- $msg_de
			echo
		fi
	else
		printf -- "$(gettext "Format %s unknown")" "$format"
		echo
	fi
}
version="1.0.2"
if [ -z $1 ];then
	echo "$(gettext "No option specified, use jkazip -h")"
elif [ $1 = "-h" ];then
	echo "$(gettext "	synopsis:	jkazip <options> <file or directory>")"
	echo ""
	echo "$(gettext "	-d,		decompress file")"
	echo "$(gettext "	-f <format>,	specified format whe decompress, necessary only when the name have more than one point before the file extension")"
	echo "$(gettext "	-c <format>,	compress file")"
	echo "$(gettext "	-h,		show help box and exit")"
	echo "$(gettext "	-v,		show version")"
	echo ""
	echo "$(gettext "	The order must be \"jkazip -d [-f format] <file or directory>\" or \"jkazip -c <format> <file or directory\"")"
	echo ""
	echo "$(gettext "	Examples")"
	echo "$(gettext "	jkazip -d -f \"tar.gz\" file.txt.tar.gz")"
	echo "$(gettext "	jkazip -d file.7z")"
	echo "$(gettext "	jkazip -c \"tar.xz\" directory")"
	echo ""
	echo "$(gettext "	Supported formats: tar, gzip, bzip2, xzip, lzip, 7z, zip and rar")"
	echo "$(gettext "	Only one file or directory (some formats don't support directories), for more options use the each program individualy")"
	echo ""
elif [ $1 = "-v" ];then
	printf -- "$(gettext "jkazip by JKA Network; version %s")" "$version"
	echo
elif [ $1 = "-d" ];then
	if [ -z $2 ];then
		echo "$(gettext "No file or directory specified")"
		exit
	elif [ $2 = "-f" ];then
		files=1
	elif [ -d $2 ];then
		files=0
		printf -- "$(gettext "Directory %s will be decompressed")" "$2"
		echo
	elif [ -f $2 ];then
		files=0
		echo "$(gettext "File $ will be decompressed")"
	else
		printf -- "$(gettext "%s no such file or directory")" "$2"
		echo
		exit
	fi
	if [ $files -eq 0 ];then
		decompress 0 $2
	elif [ $files -eq 1 ];then
		if [ -d $4 ];then
			printf -- "$(gettext "Directory %s will be decompressed")" "$4"
			echo
		elif [ -f $4 ];then
			printf -- "$(gettext "File %s will be decompressed")" "$4"
			echo
		else
			printf -- "$(gettext "%s no sush a file or directory")" "$4"
			echo
			exit
		fi
		decompress $3 $4
	fi
elif [ $1 = "-c" ];then
	if [ -z $3 ];then
		echo "$(gettext "No file or directory specified")"
		exit
	elif [ -d $3 ];then
		printf -- "$(gettext "The directory %s will be compressed")" "$3"
		echo
	elif [ -f $3 ];then
		printf -- "$(gettext "The file %s will be compressed")" "$3"
		echo
	else
		printf -- "$(gettext "%s no such file or directory")" "$3"
		echo
		exit
	fi
	msg_co=""$(gettext "%s has been compressed")" "$3""
	if [ -z $2 ];then
		echo "$(gettext "No format specified")"
	elif [ $2 = "tar" ] 2> /dev/null ;then
		tar cvf $3.tar $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "tar.gz" ] 2> /dev/null ;then
		tar cvzf $3.tar.gz $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "tar.bz2" ] 2> /dev/null ;then
		tar cvjf $3.tar.bz2 $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "tar.xz" ] 2> /dev/null ;then
		tar cvJf $3.tar.xz $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "tar.xz" ] 2> /dev/null ;then
		tar cvf $3.tar.lz --lzip $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "tlz" ] 2> /dev/null ;then
		tar cvf $3.tlz --lzip $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "tbz2" ] 2> /dev/null ;then
		tar cvjf $3.tbz2 $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "tgz" ] 2> /dev/null ;then
		tar cvjf $3.tgz $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "txz" ] 2> /dev/null ;then
		tar cvJf $3.txz $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "7z" -o $2 = "7zip" ] 2> /dev/null ;then
		7z a $3.7z $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "zip" ] 2> /dev/null ;then
		zip $3.zip $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "gz" -o $2 = "gzip" ] 2> /dev/null ;then
		gzip -9k $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "bz2" -o $2 = "bzip2" ] 2> /dev/null ;then
		bzip2 -9k $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "lz" -o $2 = "lzip" ] 2> /dev/null ;then
		lzip -9k $3
		if [ $? -eq 0 ];then
			printf -- $msg_co
			echo
		fi
	elif [ $2 = "rar" ] 2> /dev/null ;then
		echo "$(gettext "Format rar are not supported for compression")"
	else
		printf -- "$(gettext "Format %s unknown")" "$2"
		echo
	fi
else
	echo "$(gettext "Unknown option")"
fi
