#!/usr/bin/env bash
winezgui-identity-restore()
{
  HEADER="$(basename ${0}): ${FUNCNAME[0]}"
  dbug "I: $(basename ${0}): Launched ${FUNCNAME[0]}"
    
  SOURCE "script-check-variables-loaded-or-not"
  script-check-variables-loaded-or-not

  if [ -z "${1}" ]; then
        echo "E: ${HEADER}: Must provide Prefix or Template Directory to process"
        return 1
  else
        DIRECTORY="${1}"
        DIRNAME=$(basename "${1}")
  fi 

  # flatpak install based Script from system needs to load from it's own directory
  # WINEZGUI_SCRIPTS
  SOURCE "winezgui-fetch-replacement-data"
  winezgui-fetch-replacement-data # DATA
  
  # flatpak install based Script from system needs to load from it's own directory
  # WINEZGUI_SCRIPTS
  SOURCE "winezgui-fetch-replacement-files"
  winezgui-fetch-replacement-files "${1}" #FILES
  
  cd "${DIRECTORY}"

  dbug "I: ${HEADER}: Processing files inside ${DIRNAME}"
  SAVEIFS=${IFS}
  IFS=$(echo -en "\n\b") # needed for sed to work with files in variable
  
   # Do search and replace in the files inside given directory
  for (( i=0; i <${LEN}; i++ )); do
      echo -n "."
      sed  "s/${REPLACE[$i]}/${SEARCH[$i]}/g; t;" -i ${FILE_LIST} 2>/dev/null || \
      echo "E: ${HEADER}: Failed to Replace: ${SEARCH[$i]} => ${REPLACE[$i]}" \
      && (echo "\"${SEARCH[i]}\"   ;  \"${REPLACE[i]}\""|column -t -s ";")
  done
  echo " "
  IFS=${SAVEIFS}
  # Rename Directory on Restore
  DSOURCE="${DIRECTORY}/drive_c/users/${USER}"
  DTARGET="${DIRECTORY}/drive_c/users/XOUSERXO"
  # If not restored from a backup file, revert xouserxo->user
  # Make sure that directory for the user exists, before moving
  if [ -d "${DIRECTORY}/drive_c/users/XOUSERXO" ]; then
        mv "${DTARGET}" "${DSOURCE}" && \
        dbug  "I: ${HEADER}: Renamed ${DSOURCE}"
        dbug  "I: ${HEADER}: To      ${DTARGET}"
  fi
  # Recreate Links to H: link to $HOME on Restore
  dbug "I: ${HEADER}: Recreating Links to H: in ${DIRNAME} prefix"
  #unlink "${PREFIXDIR}/dosdevices/h:"
  # save/load bug
  ln -sf "${HOME}" "${DIRECTORY}/dosdevices/h:" && \
  dbug "I: ${HEADER}: Created H: symlink ${HOME} to ${DIRNAME}/dosdevices/h:"


  # For Install Type and Flatpak Name
  # Check and update Flatpak name if flatpak install else remove flatpak name

  # Set install type 
  sed "s|\(export INSTALL\_TYPE=\).*|\1${INSTALL_TYPE}|g; t;" -i ${FILE_LIST} 
  sed "s|\(export FLATPAK\_NAME=\).*|\1${FLATPAK_NAME}|g; t;" -i ${FILE_LIST} 

  # Check if user Identity is restored in prefix
  if [ -f "${1}/Info.yml" ] && \
     ( grep -o "XOUSERHOMEXO" ${1}/Info.yml 1>/dev/null 2>/dev/null ); then
       echo "E:------------------------------------------"
       echo "E: ${FUNCNAME[0]}: Identity Not Restored for ${USER}!"
       echo "E:------------------------------------------"
       ${ZENITY_CMD} --error --title "Restore Process XOUSERHOMEXO failed" \
              --text "User Identity is not set for ${USER}, launch may fail!"
  fi
  # Check if identity is restored
  if [ -f "${1}/Info.yml" ] && \
     (! grep -o "XOUSERHOMEXO" ${1}/Info.yml 1>/dev/null 2>/dev/null );
      then
      dbug "I: ${FUNCNAME[0]}: Identity Restored for ${USER}!"
  fi

  # Cleanup variables
  unset LEN SSSSSSS SEARCH REPLACE FIND_EXE_PATH 
  unset FPNAME WEXE WVER FILE_LIST DTARGET DSOURCE
  
#   # Find other files which has username in it.
#   SOURCE "winezgui-identity-restore-from-drive-c-files"
#   winezgui-identity-restore-from-drive-c-files "${1}"
}
