#!/usr/bin/env bash
CALLED_IN=`dirname $0`
source "$CALLED_IN/.ac-sh-funcs"

if [ "$1" ]
then TARGET_HOSTNAME="$1"
else echo "target hostname required (first argument)"
     exit 1
fi
if [ "$2" ]
then MODE="$2"
else echo "mode required (second argument)"
     exit 1
fi
if [ "$3" ]
then NUMBER="$3"
else echo "number required (third argument)"
     exit 1
fi

if [ "$MODE" = "customer" ]
then TO_ARCHIVE="$AC_CUSTOMER"
     TAR_OPTIONS=""
else TO_ARCHIVE="$BITSLIB"
     TAR_OPTIONS="--exclude ./online/* --exclude ./marks/*"
     TAR_OPTIONS="$TAR_OPTIONS --exclude ./postscript/*"
fi
TAR_OPTIONS="$TAR_OPTIONS --ignore-failed-read"

ARCHIVE_FILENAME="$MODE-$NUMBER.tgz"
LOCAL_FILENAME="$TMP/$ARCHIVE_FILENAME"
REMOTE_FILENAME="/projects/LaserControl-backup.`hostname -s`/$ARCHIVE_FILENAME"
REMOTE_DIR=`dirname "$REMOTE_FILENAME"`
REMOTE_DIR_RELATIVE=`echo "$REMOTE_DIR" | sed 's|/projects/||'`
EXITCODE=1

echo "`date +'%x %X'` starting $MODE backup to $TARGET_HOSTNAME:$REMOTE_FILENAME"
if tar czf "$LOCAL_FILENAME" --directory "$TO_ARCHIVE" $TAR_OPTIONS .
then if ssh -o"BatchMode=yes" "$TARGET_HOSTNAME" mkdir -p "$REMOTE_DIR" &&
        scp -o"BatchMode=yes" "$LOCAL_FILENAME" \
                              "$TARGET_HOSTNAME:$REMOTE_FILENAME"
     then EXITCODE=0
     elif cd "$TMP" && smbclient -N "//$TARGET_HOSTNAME/projects" -c \
                       "mkdir $REMOTE_DIR_RELATIVE; cd $REMOTE_DIR_RELATIVE; \
                        put $ARCHIVE_FILENAME"
     then EXITCODE=0
     elif doftp.py "$TARGET_HOSTNAME" LASER01 gravure \
                   "$LOCAL_FILENAME" "$REMOTE_FILENAME"
     then EXITCODE=0
     fi
fi

if [ "$EXITCODE" -eq 0 ] 
then echo "`date +'%x %X'` $MODE backup successful"
else echo "`date +'%x %X'` $MODE backup failed"
fi
rm -f "$LOCAL_FILENAME"
exit "$EXITCODE"
