#!/usr/bin/env bash
# script-find-installed-exe
# Find Installed EXE inside prefixdir
# script-find-installed-exe
# script-find-installed-exe
# REVIEW
script-find-installed-exe()
{
  dbug "I: Script: Launched ${FUNCNAME[0]}"
  
  SOURCE "script-check-variables-loaded-or-not"
  script-check-variables-loaded-or-not
  FOUND_EXE_FILES="${PREFIXDIR}/found-exe-files.yml"
  NEW_FOUND_EXE_FILES="${PREFIXDIR}/new-found-exe-files.yml"
  ##############################################################################
  # 4. Find if exe files installed after setup, ask user to change prefix
  # Post 1st run, search exe files in prefixdir and add them to EXE_LIST
  dbug "I: Script: Find Exe: Searching prefix for newly installed exe files!"

  SOURCE "script-get-installed-exe-files"
  script-get-installed-exe-files
  EXE_LIST="${EXE_FILES_FOUND}"


  # If EXE_LIST contains files, prompt user to change exe
  if [ -z "${EXE_LIST}" ]; then
       dbug "I: Script: Find Exe: EXE_LIST is empty!"
       return 1
  fi
  dbug "I: Script: Find Exe: Found exe files inside prefix"
  echo "${EXE_LIST}"
  # if found-exe-files.yml file do no exist, create and prompt for change exe
  if [ ! -f "${FOUND_EXE_FILES}" ]; then
       dbug "I: Script: Find Exe: Cannot find ${FOUND_EXE_FILES}, 1st run!"
       echo "${EXE_LIST}" |sed "s|${PREFIXDIR}|\${PREFIXDIR}|g" \
                 > "${FOUND_EXE_FILES}" && \
            dbug "I: Script: Find Exe: created ${FOUND_EXE_FILES}"

       # Ask use to Change the EXE for Installer
       unset TEXT TITLE
       TEXT+="New exe files found inside prefix...\\n"
       TEXT+="Change exe along with prefix\?"
       TITLE+="${EXE_NAME} ${APP_WITH_VER} - Switch Prefix!"
       ${ZENITY_CMD} --question --title "${TITLE}" --text "$TEXT"

       ANSWER=$?
       if [ ${ANSWER} -eq 0 ] ; then
            SOURCE "script-get-selected-exe"
            SOURCE "script-change-exe-variables"
            script-get-selected-exe
            SOURCE "script-change-icon"
            # We do not want to see zenity dialog of icon change success
            export script-change-icon_DO_NOT_PROMPT="true"
            script-change-icon "${SELECTED_EXE}"
            # Create a file to change prefix name immediately on next launch
            # On next launch, it will change prefixdir name
            SOURCE "script-create-change-prefix-file"
            script-create-change-prefix-file
            script-change-exe-variables
       else
            TEXT="You can use <b>Change...</b>-><b>Switch Prefix</b> menu to change exe and prefix!"
            ${ZENITY_CMD} --info --title "${TITLE}" --text "${TEXT}"
            dbug "I: Script: Find Exe: Not changing exe!"
            dbug "I: Script: Find Exe: use Change EXE... to set default exe"
       fi

  else # If already existing EXE_LIST file
       dbug "I: Script: Find Exe: found found-exe-files.yml"
       # Create a new file with the list to compare
       # Remove Prefix name

       echo "${EXE_LIST}" |sed "s|${PREFIXDIR}|\${PREFIXDIR}|g" \
            > "${NEW_FOUND_EXE_FILES}"
       dbug "I: Script: Find Exe: Checking for more recent exe files"

       dbug "I: Script: Find Exe: Checking for any difference"
       # Check if new files are created, and are different in the list
       if ! (diff "${FOUND_EXE_FILES}" "${NEW_FOUND_EXE_FILES}") ; then
            dbug "I: Script: Find Exe: New exe files found!"
            # Ask use to Change the EXE for Installer
            unset TEXT
            TEXT+="New exe files <b>found</b>, Create Shortcut for it to Launch?"
            TEXT+="\\n<i>Default exe can be set using Change Exe...</i>"
            TEXT+="\\n<i>Shortcut to this exe can be set using WineZGUI->More->Shortcuts->Create...</i>"
            ${ZENITY_CMD} --question --title "${EXE_NAME} ${APP_WITH_VER}" \
                 --text "${TEXT}"
            ANSWER=$?
            if [ ${ANSWER} -eq 0 ] ; then
                 # Prompt user to change exe
                 SOURCE "script-get-selected-exe"
                 SOURCE "script-change-exe-variables"
                 script-get-selected-exe
                 # And replace new list with old list
                 echo "${EXE_LIST}" |sed "s|${PREFIXDIR}|\${PREFIXDIR}|g" \
                      > "${FOUND_EXE_FILES}"
                 dbug "I: Script: Find Exe: Updated ${FOUND_EXE_FILES}!"
                 # Remove the new-found-exe-files.yml file
                 rm "${NEW_FOUND_EXE_FILES}" && \
                 dbug "I: Script: Find Exe: Removed ${NEW_FOUND_EXE_FILES}"

                 # Create Shortcut for the selected exe
                 SOURCE "script-create-other-shortcuts"
                 script-create-other-shortcuts

                 # Ask whether to launch it?
                 ${ZENITY_CMD} --question --title "${EXE_NAME} ${APP_WITH_VER}" \
                 --text "Shortcut created for ${SELECTED_EXE_NAME}, launch?"
                 ANSWER=$?
                 if [ ${ANSWER} -eq 0 ] ; then
                     SOURCE "script-launch"
                     script-launch "${SELECTED_EXE}"
                 else
                     ${ZENITY_CMD} --info --title "${EXE_NAME} ${APP_WITH_VER}" \
                     --text "Shortcut for ${SELECTED_EXE_NAME}, can be launched from menu"
                 fi

                 # Disabled for 2nd time, let user use change exe manually
                 # dbug "I: Script: Find Exe: Changing icon..."
                 # SOURCE "script-change-icon"
                 # # We do not want to see zenity dialog of icon change success
                 # export script-change-icon_DO_NOT_PROMPT="true"
                 # script-change-icon "${SELECTED_EXE}"
                 # # Create a file to change prefix name immediately on next launch
                 # # On next launch, it will change prefixdir name
                 # SOURCE "script-create-change-prefix-file"
                 # script-create-change-prefix-file
                 # script-change-exe-variables
            else
                 dbug "I: Script: Find Exe: Not changing exe!"
                 dbug "I: Script: Find Exe: use Change EXE... to set default"
                 echo "${EXE_LIST}" |sed "s|${PREFIXDIR}|\${PREFIXDIR}|g" \
                      > "${FOUND_EXE_FILES}" && \
                 dbug "I: Script: Find Exe: Updaing ${FOUND_EXE_FILES}"
            fi
       fi

  fi
  
 # Remove Tempdir contents inside drive_c/users/$USER/Temp
 if [ ! -d "${PREFIXDIR}/drive_c/users/${USER}/Temp" ]; then
      mkdir -p "${PREFIXDIR}/drive_c/users/${USER}/Temp"
 fi

 unset TEXT TITLE

}
