#!/bin/bash
# Copyright (C) 2019 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0

set -e
BROWSER=$1
HOST_PATH=$2
HOST_APP_NAME=x11vkbnativehost
HOST_JSON_NAME=x11vkb.host.json

function echo_error_and_exit {
    echo $1
    echo "Use case: ./install_host.sh chromium [or chrome] /full/path/to/executable"
    exit 1
}

if [ "$BROWSER" != "chromium" ]  && [ "$BROWSER" != "chrome" ]; then
    echo_error_and_exit "use chromium or chrome as the first parameter"
fi

if [ ! -f "$HOST_PATH/$HOST_APP_NAME" ]; then
    if [ ! -f "$HOST_PATH" ]; then
        echo_error_and_exit "executable at path $HOST_PATH not found"
    else
        if [ $HOST_APP_NAME == "${HOST_PATH##*/}" ]; then
            HOST_PATH=$(echo $HOST_PATH | rev | cut -d'/' -f2- | rev)
        else
            echo_error_and_exit "executable at path $HOST_PATH/$HOST_APP_NAME not found"
        fi
    fi
fi
HOST_PATH=$(echo $HOST_PATH | sed 's:/*$::')

DIR=$PWD

if [ $BROWSER == "chromium" ]; then
    TARGET_DIR="$HOME/.config/chromium/NativeMessagingHosts"
else
    TARGET_DIR="$HOME/.config/google-chrome/NativeMessagingHosts"
fi

# Create directory to store native messaging host.
mkdir -p "$TARGET_DIR"

# Copy native messaging host manifest.
cp "$DIR/$HOST_JSON_NAME" "$TARGET_DIR"

# Update host path in the manifest.
ESCAPED_HOST_PATH=${HOST_PATH////\\/}

sed -i -e "s/HOST_PATH/$ESCAPED_HOST_PATH/" "$TARGET_DIR/$HOST_JSON_NAME"

# Set permissions for the manifest so that all users can read it.
chmod o+r "$TARGET_DIR/$HOST_JSON_NAME"

echo $HOST_JSON_NAME has been installed.
