#!/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