#!/usr/bin/env bash

set -e

get_desktop_dir() {
    local _user_config_dir _desktop_dir
    if [[ -v XDG_CONFIG_HOME ]]; then
        _user_config_dir="${XDG_CONFIG_HOME}"
    else
        _user_config_dir="${HOME}/.config"
    fi
    if [[ -f "${_user_config_dir}/user-dirs.dirs" ]]; then
        source "${_user_config_dir}/user-dirs.dirs"
    fi
    if [[ -v XDG_DESKTOP_DIR ]]; then
        _desktop_dir="${XDG_DESKTOP_DIR}"
    else
        _desktop_dir="${HOME}/Desktop"
    fi
    echo -n "${_desktop_dir}"
}

copy() {
    if [[ ! -f "${1}" ]]; then
        echo "${1} was not found" >&2
        exit 1
    fi
    if [[ -f "${2}/$(basename "${1}")" ]] || [[ -f "${2}" ]] && [[ "${force}" = false ]]; then
        echo "File already exists" >&2
        exit 1
    fi

    cp "${1}" "${2}"
}

desktop_dir="$(get_desktop_dir)"

set_permission(){
    chmod 755 "${1}"
    gio set "${1}" metadata::trusted true
}

check_livecd(){
    if [[ -d "/run/archiso" ]] || grep "^archisobasedir=" "/proc/cmdline" 2> /dev/null 1>&2; then
        return 0
    fi
    return 1
}

if check_livecd; then
    source_file="/usr/share/applications/calamares.desktop"
    desktop_icon="${desktop_dir}/$(basename "${source_file}")"
    copy "${source_file}" "${desktop_dir}"
    os_name="$(
        if [[ -f "/etc/os-release" ]]; then
            source "/etc/os-release"
            echo -n "${NAME}"
        else
            echo -n "Univalent GNU/Linux"
        fi
    )"
    sed -i "s/%OS_NAME%/${os_name}/g" "${desktop_icon}"

    set_permission "${desktop_icon}"
fi
