#!/usr/bin/env sh



#--------[ Bootstrap Correct Shell ]--------#
if [ "$(command -v bash)" ] && [ -z "$BASH_VERSION" ]; then bash setup.sh $@; fi
if [ "$(command -v bash)" ] && [ -z "$BASH_VERSION" ]; then exit; fi



#--------[ Check Root ]--------#
if [ $(whoami) != "root" ]; then
    echo ""
    echo "FAKE//OS setup must be run as 'root'"
    echo ""
    exit 1
fi



#--------[ Check Install Method ]--------#
if [ ! -d "src/fake-os" ]; then
    rm -rf /tmp/fake-os
    git clone --depth 1 https://git.fake.onl/fake/fake-os.git /tmp/fake-os
    cd /tmp/fake-os
fi



#--------[ Check Version ]--------#
if [ -f "/var/cache/fake-os/fake_version.txt" ]; then
    export TMP_VERSION_LOCAL="$(cat /var/cache/fake-os/fake_version.txt)"
    export TMP_VERSION_REMOTE="$(git rev-parse HEAD | head -c 10)"
    if [ "$TMP_VERSION_LOCAL" == "$TMP_VERSION_REMOTE" ]; then
        if [ "$(command -v _fake_layout_message)" ]; then
            _fake_layout_message "Version" "$ENV_FAKE_VERSION" "upgrade" "Already up to date..."
        else
            echo ""
            echo "FAKE//OS: Already up to date..."
            echo ""
        fi
        exit 0
    fi
    unset TMP_VERSION_LOCAL
    unset TMP_VERSION_REMOTE
else
    echo ""
    cat src/fake-os/assets/logos/logo_full.txt
    echo ""
    sleep 1
fi



#--------[ CLI Flag Arguments ]--------#
for ARGV in $@; do
  case $ARGV in
    -d|--debug) export FAKE_MODE_DEBUG="TRUE" ;;
    -v|--quiet) export FAKE_MODE_QUIET="TRUE" ;;
  esac
done



#--------[ Copy FAKE//OS Files ]--------#
echo "Copy FAKE//OS Files"
rm -rf /usr/share/fake-os
cp -rv src/fake-os /usr/share
mkdir -p /var/cache/fake-os
echo ""



#--------[ Log FAKE//OS Version Variable ]--------#
echo "$(git rev-parse HEAD | head -c 10)" > /var/cache/fake-os/fake_version.txt



#--------[ Install Dependencies ]--------#
echo "Install FAKE//OS Dependencies"
if [ "$(command -v paru)" ]; then
    paru -Syyy
    paru --noconfirm -S curl figlet git lolcat rsync perl sudo unzip vim
elif [ "$(command -v pacman)" ]; then
    pacman -Syyy
    pacman --noconfirm -S curl figlet git lolcat rsync perl sudo unzip vim
elif [ "$(command -v apt)" ]; then
    apt update
    apt -y install curl figlet git lolcat rsync perl sudo unzip vim
elif [ "$(command -v apk)" ]; then
    apk add curl figlet git rsync perl sudo unzip vim
fi



#--------[ Load FAKE//OS Init Script ]--------#
. src/fake-os/fake_init.sh --quiet



#--------[ Copy User RC Init Script ]--------#
mkdir -p /etc/skel

_fake_layout_heading "Copy InitRC Script"
cp -rv src/fake-os/assets/configs/initrc/initrc_$ENV_SHELL.sh /etc/skel/.bashrc
cp -rv src/fake-os/assets/configs/initrc/initrc_$ENV_SHELL.sh /etc/skel/.profile

cp -rv /etc/skel/. /root
for TMP_USER in $(ls /home); do
    if [ ! "$(grep -e fake_init /home/$TMP_USER/.bashrc)" ]; then
        cp -rv /etc/skel/. /home/$TMP_USER/
    fi
done
unset TMP_USER



#--------[ Clean Up Junk Files ]--------#
_fake_layout_heading "Clean-Up Distro OS Files"

_fake_utils_config_replace src/fake-os/assets/configs/issue/issue.txt /etc/issue
_fake_utils_config_regex "%ENV_DISTRO" "$ENV_DISTRO" "/etc/issue"
_fake_utils_config_regex "%ENV_FAKE_VERSION" "$ENV_FAKE_VERSION" "/etc/issue"

_fake_utils_config_replace src/fake-os/assets/configs/issue/issue-net.txt /etc/issue.net
_fake_utils_config_regex "%ENV_DISTRO" "$ENV_DISTRO" "/etc/issue.net"
_fake_utils_config_regex "%ENV_FAKE_VERSION" "$ENV_FAKE_VERSION" "/etc/issue.net"

rm -rf /etc/motd
echo 'rm -rf /etc/motd'



#--------[ Setup Complete ]--------#
_fake_layout_heading "FAKE//OS Setup Complete!"