#!/bin/bash

    << CHANGELOG
    2021-03-10: Template Created & Added to GIT
    2021-03-13: Forked from template
CHANGELOG


if [[ "$EUID" -ne 0 ]]; then
	echo "This installer needs to be run with superuser privileges."
	exit
fi




echo -e "
$(tput setaf 3; tput setab 0)
    >> # [Coral-01] - Basic Dependencies (apt update)
$(tput sgr 0)
"

apt -qq update && sudo apt -qq install -y curl gnupg apt-transport-https




echo -e "
$(tput setaf 3; tput setab 0)
    >> # [Coral-02] - Check Pre-Requisites
$(tput sgr 0)
"


echo -e "$(tput setaf 7; tput setab 0)" && \
echo "Kernel Version (Need either < 4.18.*, or lsmod prints nothing):" && \
uname -r && \
echo -e "$(tput sgr 0)"



echo -e "
$(tput setaf 3; tput setab 0)
    >> # [Coral-03] - Install Drivers
$(tput sgr 0)
"


# Verify driver does not exist (either kernel < 4.18.* or lsmod prints nothing)
if (lsmod | grep apex); then
    echo -e "$(tput setaf 0; tput setab 3)" && \
    echo "ERROR: Need to remove Apex driver somehow first!" && \
    echo -e "$(tput sgr 0)"
else
    echo -e "$(tput setaf 0; tput setab 2)" && \
    echo "OK. Pre-built Apex driver not installed" && \
    echo -e "$(tput sgr 0)"
    
    # Add package repository, then install. 

    (echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list) && \
    (curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -) && \
    sudo apt -qq update && \
    sudo apt -qq install -y gasket-dkms libedgetpu1-std && \
    completed=true
fi



echo -e "
$(tput setaf 3; tput setab 0)
    >> # [Coral-04] - Create udev rule & add self to group
$(tput sgr 0)
"

if [ "$completed" = true ]; then
    Acct=${USER} && \
    NewGroup=apex && \
    udevRulesFile=/etc/udev/rules.d/65-apex.rules && \
    sudo sh -c "echo 'SUBSYSTEM==\"apex\", MODE=\"0660\", GROUP=\"apex\"' > ${udevRulesFile}" && \
    echo -e "$(tput setaf 7; tput setab 0)" && \
    echo "udev Rules File (${udevRulesFile}):" && \
    sudo cat ${udevRulesFile} && \
    echo -e "$(tput sgr 0)" && \
    sudo groupadd ${NewGroup} && \
    sudo usermod -aG ${NewGroup} ${Acct} && \
    sudo echo "Found group '${NewGroup}' for user '${Acct}': $((sudo -u ${Acct} id -nG) | grep -c "${NewGroup}")" && \
    echo -e "$(tput setaf 0; tput setab 3)" && \
    echo 'NOTE: A system restart is required. Commands to run afterwards:' && \
    echo '-> sudo lspci -nn | grep 089a' && \
    echo '-> ls /dev/apex*' && \
    echo '-> lspci -v' && \
    echo -e "$(tput sgr 0)" && \
    (lspci -nn | grep 089a) && \
    ls /dev/apex*
else
    echo -e "$(tput setaf 0; tput setab 3)" && \
    echo "ERROR: Drivers were not successfully installed, so skipping this step..." && \
    echo -e "$(tput sgr 0)"
fi



echo -e "
$(tput setaf 3; tput setab 0)
    >> # [Coral-05] - Script Cleanup
$(tput sgr 0)
"

if ! command -v realpath &> /dev/null
then
    echo -e "COMMAND 'realpath' could not be found. $(tput setaf 3; tput setab 0)Please move script manually.$(tput sgr 0)"
else
    SCRIPT=`realpath -s $0` && \
    DESTINATION=~/Deploy && \
    mkdir -p ${DESTINATION} && \
    mv ${SCRIPT} ${DESTINATION} && \
    ls -laR ${DESTINATION}
fi
