#!/bin/bash

USAGE=$(
      cat <<-END
     Perform zip operations based on the compression mechanism

     zzip uncmp archive.tar target				#### Uncompress the file to target directory(default=PWD)  
     zzip cmp archive.tar source1, [source2...]			#### Compress and/or archive the source files. 

END
)

#### Global Config. #################################
# set -x  # Output commands being run.
set -e # Exit on error.å

FUNAME=$(basename "$0")
YMD=$(date '+%Y%m%d')

### Input Params and Defaults ##################################
[ $# -eq 0 ] && echo -e "$USAGE" && exit ###  No input print doc
task=$1

### Core ###########################################
if [[ "$task" = uncmp ]]; then
	zipfile=$2 && [ -z $2 ] && echo $USAGE && zipfile="invalid"
	targetdir=$3 && [ -z $3 ] && targetdir=$(pwd)

	case $zipfile in
		*.zip)      unzip "$zipfile" -d $targetdir                           ;;
		*.tar)      tar -xvf "$zipfile"  -C $targetdir                       ;;
		*.tgz)      tar -zxvf "$zipfile" -C $targetdir                       ;;
		*.tar.xz)   tar -xvf "$zipfile"  -C $targetdir                       ;;
		*.tar.bz2)  tar -jxvf "$zipfile" -C $targetdir                       ;;
		*.tar.gz)   tar -zxvf "$zipfile" -C $targetdir                       ;;
		*.7z)       7z x "$zipfile" -o $targetdir                            ;;
		*.rar)      7z x "$zipfile" -o $targetdir                            ;;
		*)          echo "'$zipfile' Format not recognized"                  ;;
	esac
	exit 0
elif [[ "$task" = cmp ]]; then
	zipfile=$2 && [ -z $2 ] && echo $USAGE && exit 0
	echo "${@:3}"
	sourcefiles="${@:3}"
	sourcefiles="${@:3}" && [ ${#sourcefiles[@]} -eq 0 ] && echo $USAGE && exit 0

	case $zipfile in
		*.zip)      zip "$zipfile" $sourcefiles                              ;;
		*.tar)      tar -cvf "$zipfile" $sourcefiles		             ;;
		*.tgz)      tar -zcvf "$zipfile" $sourcefiles                        ;;
		*.tar.xz)   tar -Jcvf "$zipfile" $sourcefiles                        ;;
		*.tar.bz2)  tar -jcvf "$zipfile" $sourcefiles                        ;;
		*.tar.gz)   tar -zcvf "$zipfile" $sourcefiles                        ;;
		*.7z)       7z a "$zipfile" $sourcefiles                             ;;
		*.rar)      rar a "$zipfile" $sourcefiles                            ;;
		*)          echo "'$zipfile' Format not recognized"                  ;;
	esac
	exit 0
else
      echo $USAGE
fi
