#!/bin/bash
# Elevate script
if [ ! "$UID" -eq 0 ]
then
    sudo bash "$BASH_SOURCE" "$USER";
else
    # Download and extract `youtube-music-dl`
    archiveName="$(sudo -u "$1" mktemp)";
    sudo -u "$1" wget https://github.com/dougppaz/youtube-music-dl/releases/download/v1.2.1/youtube-music-dl.zip -O "$archiveName";
    extensionName=youtube-music-dl;

    contextRoot="$(sudo -u "$1" mktemp -d)";
    extensionDir="$contextRoot/$extensionName";
    keyFile="$extensionDir.pem";
    extensionFile="$extensionDir.crx";
    manifestFile="$extensionDir/manifest.json";

    extensionRoot=/usr/share/brave-extensions;
    destination="$extensionRoot/$extensionName.crx";

    # Prepare extension
    mkdir -p "$extensionRoot";
    sudo -u "$1" unzip "$archiveName" -d "$extensionDir";
    sudo -u "$1" brave-browser --pack-extension="$extensionDir";
    rm "$archiveName";

    # Tamper manifest file
    manifest="$(cat "$manifestFile" | jq ". + {key: "'"'"$(openssl rsa -in "$keyFile" -pubout -outform DER | openssl base64 -A)"'"'"}")";
    manifest="$(echo "$manifest" | jq ".background.persistent = false")";
    echo "$manifest" | sudo -u "$1" tee "$manifestFile";

    # Pack extension
    extensionID="$(openssl rsa -in "$keyFile" -pubout -outform DER | sha256sum | head -c32 | tr 0-9a-f a-p)";
    extensionVersion="$(cat "$manifestFile" | jq -r '.version')";
    sudo -u "$1" brave-browser --pack-extension="$extensionDir" --pack-extension-key="$keyFile";

    # Install extension and preinstall it
    cp "$extensionFile" "$extensionRoot";
    configRoot=/opt/brave.com/brave/extensions/
    rm -rf "$contextRoot";
    chmod -R a+rx "$extensionRoot";
    chmod -R u+w "$extensionRoot";
    mkdir -p "$configRoot";
    {
        echo "{";
        echo '    "external_crx": "'"$destination"'",';
        echo '    "external_version": "'"$extensionVersion"'"';
        echo "}";
    } | tee "$configRoot/$extensionID.json";
fi