#!/bin/bash

# Main AppImage script to wrap XDG_* variable properly for Qt5.
#
# Copyright (c) 2015-2018, Gilles Caulier, <caulier dot gilles at gmail dot com>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#

if [[ "$(arch)" = "x86_64" ]] ; then
    export LD_PRELOAD=$LD_PRELOAD:/usr/lib64/libfreetype.so
    export LD_PRELOAD=$LD_PRELOAD:/usr/lib64/libudev.so
else
    export LD_PRELOAD=$LD_PRELOAD:/usr/lib/libfreetype.so
    export LD_PRELOAD=$LD_PRELOAD:/usr/lib/libudev.so
fi

echo "-- digiKam AppImage Bundle"
echo "-- Use 'help' as CLI argument to know all available options for digiKam application"

DIR="`dirname \"$0\"`"
DIR="`( cd \"$DIR\" && pwd )`"
export APPDIR=$DIR

export APPIMAGE_ORIGINAL_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export APPIMAGE_ORIGINAL_QT_PLUGIN_PATH=$QT_PLUGIN_PATH
export APPIMAGE_ORIGINAL_XDG_DATA_DIRS=$XDG_DATA_DIRS
export APPIMAGE_ORIGINAL_PATH=$PATH

export LD_LIBRARY_PATH=$DIR/usr/lib/:$LD_LIBRARY_PATH
export QT_PLUGIN_PATH=$DIR/usr/plugins/
export XDG_DATA_DIRS=$DIR/usr/share/:$XDG_DATA_DIRS
export PATH=$DIR/usr/bin:$DIR/usr/lib:$DIR/usr/lib/libexec/kf5:$DIR/usr/share/digikam/utils:$PATH
export KDE_FORK_SLAVES=1
export CAMLIBS=$DIR/usr/lib/libgphoto2
export IOLIBS=$DIR/usr/lib/libgphoto2_port

# code to disable Plasma desktopk detection with QDesktopService
export APPIMAGE_ORIGINAL_KDE_FULL_SESSION=$KDE_FULL_SESSION
export APPIMAGE_ORIGINAL_DESKTOP_SESSION=$DESKTOP_SESSION
export APPIMAGE_ORIGINAL_XDG_CURRENT_DESKTOP=$XDG_CURRENT_DESKTOP
export APPIMAGE_ORIGINAL_XDG_SESSION_DESKTOP=$XDG_SESSION_DESKTOP
#unset KDE_FULL_SESSION
#unset DESKTOP_SESSION
#unset XDG_CURRENT_DESKTOP
#unset XDG_SESSION_DESKTOP

# if no customized Qt debug loggin variable is set, turn on one for a better readability

if [ -z "$QT_MESSAGE_PATTERN" ]; then
    export QT_MESSAGE_PATTERN="`echo -e "\033[34m%{function}\033[0m: %{message}"`"
fi

export APPIMAGE_STARTUP_LD_LIBRARY_PATH=$LD_LIBRARY_PATH
export APPIMAGE_STARTUP_QT_PLUGIN_PATH=$QT_PLUGIN_PATH
export APPIMAGE_STARTUP_XDG_DATA_DIRS=$XDG_DATA_DIRS
export APPIMAGE_STARTUP_PATH=$PATH

# Parse CLI options.

if [[ $1 == "showfoto" ]] ; then

    # Run Showfoto as well.
    showfoto ${@:2}

elif [[ $1 == "debug" ]] ; then

    if [[ $2 == "showfoto" ]] ; then

        # Showfoto in debug mode.

        echo "Starting Showfoto into GDB..."
        echo "Use 'bt' command on debugger prompt to get a crash backtrace."
        echo "Use 'q' command to quit debugger session."
        gdb -ex=r --args showfoto ${@:3}

    else

        # digiKam in debug mode.

        echo "Starting digiKam into GDB..."
        echo "Use 'bt' command on debugger prompt to get a crash backtrace."
        echo "Use 'q' command to quit debugger session."
        gdb -ex=r --args digikam ${@:2}

    fi

elif [[ $1 == "help" ]] ; then

    # digiKam/Showfoto CLI help.

    echo "digiKam AppImage bundle CLI options:"
    echo " without option       : run digiKam."
    echo " <showfoto>           : run Showfoto instead digiKam."
    echo " <debug>              : run digiKam into GDB."
    echo " <debug> <showfoto>   : run Showfoto into GDB."
    echo " <desktopintegration> : run native AppImage script for a desktop integration."
    echo " <help>               : show these information."

elif [[ ($1 == "desktopintegration") ]] ; then

    # Native AppImage CLI options.

    echo "Call native AppImage CLI tools for desktop integration..."

    digikam.wrapper $@

else

    # Run digiKam as well.

    digikam $@

fi
