#!/bin/sh -u

export LC_ALL=C

readonly INI_FILEPATH='/var/opt/kaspersky/kesl/common/kesl.ini'
readonly SHELLEX_FILENAME='kaspersky-kesl.desktop'
readonly RESOURCE_PATH='/opt/kaspersky/kesl/resource/'
readonly AUTOSTART_PATH='/etc/xdg/autostart'
readonly DE_APPLICATIONS_PATH='/usr/share/applications'
readonly KDE4_AUTOSTART_PATH='/usr/share/autostart'
readonly KDE4_MENUS_PATH='/usr/share/kde4/services/ServiceMenus'
readonly KDE5_MENUS_PATH='/usr/share/kservices5/ServiceMenus'
readonly THUNAR_SENDTO_PATH='/usr/share/Thunar/sendto'

Die()
{
    printf "\n%s: ERROR: %s\n\n" "$(basename "$0")" "$*" >&2
    exit 1
}

CreateSymlink()
{
    local lnk="$1"
    local dst="$2"

    if [ -h "${lnk}" ]; then
        unlink "${lnk}" || Die "cannot unlink symlink '${lnk}'"
    elif [ -f "${lnk}" ]; then
        unlink "${lnk}" || Die "cannot unlink file '${lnk}'"
    elif [ -d "${lnk}" ]; then
        rmdir "${lnk}" || Die "cannot remove directory '${lnk}'"
    fi

    ln -s "${dst}" "${lnk}" || Die "cannot create symlink '${lnk}' -> '${dst}'"
}

InstallGuiHooks()
{
    if [ -d "${AUTOSTART_PATH}" ]; then
        CreateSymlink "${AUTOSTART_PATH}/${SHELLEX_FILENAME}" "${RESOURCE_PATH}autostart.desktop"
    fi
    if [ -d "${DE_APPLICATIONS_PATH}" ]; then
        CreateSymlink "${DE_APPLICATIONS_PATH}/${SHELLEX_FILENAME}" "${RESOURCE_PATH}app.desktop"
    fi
    if [ -d "${KDE4_AUTOSTART_PATH}" ]; then
        CreateSymlink "${KDE4_AUTOSTART_PATH}/${SHELLEX_FILENAME}" "${RESOURCE_PATH}autostart.desktop"
    fi
    if [ -d "${KDE4_MENUS_PATH}" ]; then
        CreateSymlink "${KDE4_MENUS_PATH}/${SHELLEX_FILENAME}" "${RESOURCE_PATH}kde.desktop"
    fi
    if [ -d "${KDE5_MENUS_PATH}" ]; then
        CreateSymlink "${KDE5_MENUS_PATH}/${SHELLEX_FILENAME}" "${RESOURCE_PATH}kde.desktop"
    fi
    if [ -d "${THUNAR_SENDTO_PATH}" ]; then
        CreateSymlink "${THUNAR_SENDTO_PATH}/${SHELLEX_FILENAME}" "${RESOURCE_PATH}sendto.desktop"
    fi
}

DetectUseGui()
{
    if [ ! -f "${INI_FILEPATH}" ]; then
        Die "could not find '${INI_FILEPATH}' file"
    fi
    local useGui
    if ! useGui=$(grep '^\s*UseGui\s*=' "${INI_FILEPATH}"); then
        useGui=false
    fi
    useGui=$(echo "${useGui}" | sed 's:^[^=]*=\s*\(\S*\)\s*$:\1:' |tr 'A-Z' 'a-z')
    case "${useGui}" in
        "true")
            ;;
        "false")
            exit 0
            ;;
        *)
            Die "'${useGui}': invalid UseGui value"
            ;;
    esac
}

Main()
{
    DetectUseGui
    InstallGuiHooks
}

Main "$@"
exit $?
