#!/usr/bin/bash

if [ "$1" = "" ]
then
    echo "$0 [appimage-file [arguments ...]]"
    echo "    This is helper script to run appimages for additional-base-lib."
    exit
fi

if [ -e "$1" ]
then
    ABLIMAGE_FILENAME="$1"
else
    ABLIMAGE_FILENAME=`which $1`
    if [ "$?" != "0" ]
    then
        echo "File not exists."
        exit 1
    fi
fi

ABLIMAGE_FILETYPE=`xdg-mime query filetype $ABLIMAGE_FILENAME`
if [ "$ABLIMAGE_FILETYPE" != "application/vnd.appimage" ]
then
    if [ "$ABLIMAGE_FILETYPE" != "application/x-iso9660-appimage" ]
    then
        echo "Not appimage. You may try ablrun."
        exit 1
    fi
fi


ABLIMAGE_PARAMETERS=("$@")

$ABLIMAGE_FILENAME --appimage-mount >/tmp/ablimage_dir &

ABLIMAGE_PID=$!

cleanup() {
    kill $ABLIMAGE_PID
    exit $1
}
trap cleanup SIGHUP
trap cleanup SIGINT
trap cleanup SIGTERM

ABLIMAGE_DIR=""
while [ ! -d "$ABLIMAGE_DIR" ]
do
    ABLIMAGE_DIR=`cat /tmp/ablimage_dir`
    if [ ! -e /proc/$! ]
    then
        echo "Child process failed."
        exit 1
    fi
    if [ ! -e /tmp/ablimage_dir ]
    then
        echo "Trick failed. It may succeed if you try again."
        cleanup 1
    fi
done


ablrun $ABLIMAGE_DIR/AppRun ${ABLIMAGE_PARAMETERS[@]:1}

cleanup