#! /bin/sh
# Copyright © 2012-14, 2018 Richard Kettlewell.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

set -e

#echo "Running hook..."
#env | grep ^RSBACKUP | sort

case "$RSBACKUP_HOOK" in
pre-volume-hook )
  if [ -e ${WORKSPACE}/hookdata ]; then
    echo >&3 "HOOK ERROR: $RSBACKUP_HOOK: hookdata already exists"
    exit 1
  fi
  touch ${WORKSPACE}/hookdata
  what=pre
  ;;
post-volume-hook )
  if [ ! -e ${WORKSPACE}/hookdata ]; then
    echo >&3 "HOOK ERROR: $RSBACKUP_HOOK: hookdata does not exist"
    exit 1
  fi
  rm -f ${WORKSPACE}/hookdata
  what=post
  ;;
pre-device-hook )
  if [ -e ${WORKSPACE}/devhookdata ]; then
    echo >&3 "HOOK ERROR: $RSBACKUP_HOOK: devhookdata exists"
    exit 1
  fi
  touch ${WORKSPACE}/devhookdata
  what=dev-pre
  ;;
post-device-hook )
  if [ ! -e ${WORKSPACE}/devhookdata ]; then
    echo >&3 "HOOK ERROR: $RSBACKUP_HOOK: devhookdata does not exist"
    exit 1
  fi
  rm -f ${WORKSPACE}/devhookdata
  what=dev-post
  ;;
* )
  echo >&3 "HOOK ERROR: unknown hook $RSBACKUP_HOOK"
  exit 1
  ;;
esac

if [ ! -z "${RUN}" ]; then
  touch ${WORKSPACE}/${RUN}-${what}.ran
  if ${RSBACKUP_ACT}; then
    touch ${WORKSPACE}/${RUN}-${what}.acted
  fi
fi

case "$RSBACKUP_HOOK" in
    pre-volume-hook )
        case "$PRE_BACKUP_HOOK_STDERR" in
            *? )
                echo "$PRE_BACKUP_HOOK_STDERR" >&2
                ;;
        esac
        case "$PRE_BACKUP_HOOK_STATUS" in
            75 )
                rm -f ${WORKSPACE}/hookdata
                exit $PRE_BACKUP_HOOK_STATUS
            ;;
            0 | "" )
                exit 0
            ;;
            * )
                exit $PRE_BACKUP_HOOK_STATUS
            ;;
        esac
        ;;
esac
