#!/bin/bash 

# customize here the appropriate backup location
BACKUPROOT=/usr/local/cgdb/backup
TABLESET="NA"
PIT=""
OS=`uname`

while getopts "t:a:b:r:p:l" opt; do 
    case $opt in

	t)	    
	    TABLESET=${OPTARG}
	    ;;	    
	p)
	    PIT=${OPTARG}
	    ;;
	b)
	    BRANCH=${OPTARG}
	    ;;

	a)
	    # echo "Option backup was triggered with $OPTARG" >&2 
	    # BUDATE=`date +%Y%m%d-%H%M`

	    BUID=1
	    for f in `ls ${BACKUPROOT}/${TABLESET}-${BRANCH}-bu*.tar.gz 2> /dev/null`
	    do
		echo "f = $f, inc BUID ..."
		BUID=$(( $BUID + 1 ))
	    done

	    # BUID=`ls ${BACKUPROOT}/${TABLESET}-${BRANCH}-*.tar.gz | wc -l 2> /dev/null`

	    echo "Starting backup .."
	    tar -cvPf ${BACKUPROOT}/${TABLESET}-${BRANCH}-bu${BUID}.tar ${OPTARG} 2>&1 
	    gzip ${BACKUPROOT}/${TABLESET}-${BRANCH}-bu${BUID}.tar  2>&1

	    if [ $? == 0 ]
	    then
		echo "Backup finished successful"
	    else
		echo "Backup failed"
		exit 1
	    fi
	    ;; 
	l) 
	    # echo "Option List was triggered!" >&2 
	    for f in `ls ${BACKUPROOT}/${TABLESET}-${BRANCH}-bu*.tar.gz 2> /dev/null`
	    do

                # linux

                if [ "$OS" == "FreeBSD" ] \
                       || [ "$OS" == "Darwin" ]
                then
                    # osx / freebsd
                    BUTS=`stat -f%SB -t "%Y-%m-%d %H:%M:%S" $f`
                elif [ "$OS" == "Linux" ]
                then
                    # linux 
                    BUTS=`stat -c %x $f | sed 's/\(.*\)\..*/\1/'`
                else
                    echo "Unknown OS"
                    exit 1
                fi

		# BUTS=`stat --printf="%w" $f | sed 's/\..*//'`
		# echo Compare $BUTS and $PIT
		if [[ $BUTS < "$PIT" ]] || [ "$PIT" = "" ]
		then
		    BUID="bu"`basename $f | sed "s/\($TABLESET\-$BRANCH\-bu\)\([0-9]\)\(\.tar\.gz\)/\2/"`
		    # BUID=`basename $f | sed 's/\.tar\.gz//'` 
		    echo ${BUID},${BUTS}
		fi
	    done 
	    ;; 
	r)
	    echo "Starting restore .."
	    tar -xvPf ${BACKUPROOT}/${TABLESET}-${BRANCH}-${OPTARG}.tar.gz 2>&1
	    if [ $? == 0 ]
	    then
		echo "Restore finished successful"
	    else
		echo "Restore failed"
		exit 1
	    fi
	    ;; 
	\?) 
	    echo "Invalid option: -$OPTARG" >&2 
	    ;; 
	:) 
	    echo "Option -$OPTARG requires an argument." >&2 
	    exit 1 
	    ;; 
    esac 
done
