#!/usr/bin/env bash

# Create Backup Prefix / Game Bundle
# winezgui-identity-remove
# This function can create a prefix backup or a game bundle by including gamedir
# Steps:
# 0. Get disk usage of prefix
# 1. Ask user to choose prefix/bundle
# 2. Based on Selection, launch create prefix / bundle function
script-backup()
{
  dbug "I: Script: Launched ${FUNCNAME[0]}"
  
  SOURCE "script-check-variables-loaded-or-not"
  script-check-variables-loaded-or-not
  HEADER="Script: ${FUNCNAME[0]}"
  unset RESPONSE
  export SHORT_FLATPAK_NAME="${FLATPAK_NAME##*.}"
  # Using Date as part of wzt backup filename
  #
  # DATE is used externally (such as by script-backup-prefix and script-backup-bundle), so ignore SC2034
  # shellcheck disable=SC2034
  DATE=$(date +%F_%H%M)

  # 0. Get disk usage of prefix

  PREFIX_SIZE_IN_HF=$(du -sh "${PREFIXDIR}"|cut -f1)
  
  #Check whether du gave a value or not
  if [ -z "${PREFIX_SIZE_IN_HF}" ]; then
       echo "-------------------- Error --------------------------"
       echo "Error: ${FUNCNAME[0]}: PREFIX_SIZE_IN_HF not assigned"
       echo "-------------------- Error --------------------------"
  fi

  # PREFIX_SIZE_IN_BYTES is used externally (such as by script-backup-prefix and script-backup-bundle), so ignore SC2034
  # shellcheck disable=SC2034
  PREFIX_SIZE_IN_BYTES=$(echo "${PREFIX_SIZE_IN_HF}"|cut -f1 -d " "   \
                                                  |numfmt --from iec)
  dbug "I: ${HEADER}: Prefix = ${PREFIXDIR}"
  dbug "I: ${HEADER}: Prefix size = ${PREFIX_SIZE_IN_HF}"



### Debug Check variables which are used in this file up to this point
SOURCE "check-all-variables"
echo "-------------------------------${FUNCNAME[0]}------------------------------------------"
check-all-variables "APPNAME APPVERSION HEADER FLATPAK_NAME SHORT_FLATPAK_NAME DATE PREFIXDIR PREFIX_SIZE_IN_HF PREFIX_SIZE_IN_BYTES"

# For Zenity 4
ZENITY_VERSION=$(${ZENITY_CMD} --version|cut -f1 -d ".")
if [ "${ZENITY_VERSION}" -eq 4 ]; then
     WINDOW_HEIGHT=300
     WINDOW_WIDTH=500
else
     WINDOW_HEIGHT=30
     WINDOW_WIDTH=360
fi

  # 1. Ask user to choose prefix/bundle
  RESPONSE=$(${ZENITY_CMD} --title "${APPNAME}-${APPVERSION}"          \
                           --list   --hide-header                      \
                           --width=${WINDOW_WIDTH}                     \
                           --height=${WINDOW_HEIGHT}                   \
                           --radiolist --column " "                    \
                           --column   "Backup..."                      \
                                 TRUE "Prefix Backup..."               \
                                 0    "Create Game Bundle..."          \
                           --text     "<b>Backup... ${PREFIXNAME}</b>" )
  # If Cancel is clicked
  if [ -z "${RESPONSE}" ]; then
       dbug "I: ${HEADER}: Cancelled!"
       unset RESPONSE
       return 1
  fi


  dbug "I: ${HEADER}: ${RESPONSE} Selected!"

  # 2. Based on Selection, launch create prefix / bundle function
  if   [ "${RESPONSE}" = "Prefix Backup..." ]; then
         # Call script-backup-prefix
         SOURCE "script-backup-prefix"
         script-backup-prefix "${PREFIXDIR}"
  elif [ "${RESPONSE}" = "Create Game Bundle..." ]; then
         # Call WINEZGUI-SCRIPT_BACKUP-BUNDLE
         SOURCE "script-backup-bundle"
         script-backup-bundle "${PREFIXDIR}"
  fi
}
