#!/bin/sh
# apkd-install: Helper script to install/uninstall and handle .apk files
#
# Copyright (c) 2013 - 2022 Jolla Ltd.
#
# License: Jolla Proprietary

DBUS_SERVICE_NAME=com.jolla.apkd
DBUS_OBJECT_PATH=/com/jolla/apkd
DBUS_INTERFACE=com.jolla.apkd

CMD=$(basename "$0")

if [ "$CMD" = "apkd-uninstall" ]; then
    DBUS_METHOD=removeFile
elif [ "$CMD" = "apkd-install-preload" ]; then
    DBUS_METHOD=installPreloadFile
elif [ "$CMD" = "apkd-install" ]; then
    DBUS_METHOD=installFile
else # apkd-harbour-rpm-preun and apkd-harbour-rpm-post - no-op, let the dir watcher handle it
    exit 0
fi

if [ $# -eq 0 ]; then
    echo "Usage: $CMD <file1.apk> ..."
    exit 1
fi

while [ $# -ge 1 ]; do
    FILENAME="$1"
    # in case of uninstall pass package name instead
    if [ "$DBUS_METHOD" != "removeFile" ]; then
        # Make sure we always pass an absolute file path
        FILENAME="$(readlink -f "$FILENAME")"
    fi
    BUS="--session"
    if [ "$(appsupport-config --value DBusAlwaysUseSystemBus)" = "true" ]; then
        BUS="--system"
    fi

    # Pass full file path to apkd via d-bus
    dbus-send $BUS --print-reply \
        --dest=$DBUS_SERVICE_NAME \
        $DBUS_OBJECT_PATH \
        ${DBUS_INTERFACE}.${DBUS_METHOD} \
        "string:$FILENAME"
    shift
done
