#!/bin/bash

name=spkg-git
ver=git
arch=all
dep_apt="python3 python3-dev python3-pip python3-sql python3-urllib3 python3-colorama python3-requests sudo"
dep_apk="python3 py3-pip py3-colorama py3-requests sudo zstd"
dep_pip="colorama halo requests"

Reset='\033[0m'
Bold="\e[1m"
Green='\033[0;32m'

if ! [ -f "/usr/bin/apt" ] && ! [ -f "/sbin/apk" ]; then
    echo "This package script is official not supported for your system."
    echo "Make sure, you have installed the following dependencies: python3 python3-dev python3-pip python3-sql python3-urllib3 sudo"
fi

[[ -f "/usr/bin/apt" ]] && pkg_mgr="apt"
[[ -f "/sbin/apk" ]] && pkg_mgr="apk"

if (( $(id -u) != 0 )); then
    echo "This package script can only be run with root (permisson denied)"
    exit
fi


get_dependencies() {
    [[ "${pkg_mgr}" == "apt" ]] && cmd="apt install -y $dep_apt"
    [[ "${pkg_mgr}" == "apk" ]] && cmd="apk add bash $dep_apk"

    $cmd &> /dev/null
    sudo -H pip install "$dep_pip" --break-system-packages
    sudo -H pip install "$dep_pip"
}

extract() {
    cd /tmp || exit
    mv spkg*.tar.gz target.tar.gz
    mkdir /tmp/target/
    tar xf /tmp/target.tar.gz --directory /tmp/target/
    cd /tmp/target/spkg* || exit
}

inst() {
    echo -e "${Green}>>>${Reset}${Bold} Installing dependencies ... "
    get_dependencies

    echo -e "${Green}>>>${Reset}${Bold} Extracting sources ... "
    extract

    echo -e "${Green}>>>${Reset}${Bold} Installing spkg-git ... "
    rm -f /usr/bin/spkg
    rm -rf /usr/share/spkg/
    cp -r /tmp/target/spkg-main/ /usr/share/spkg/
    cp -r /tmp/target/spkg-main/data/etc/ /

    cd /usr/share/spkg/ || exit
    mv spkg.py spkg

    rm -rf build
    rm -rf data
    rm -rf resources
    rm -rf packages
    rm -f package.db
    rm -f spkg-installer.py
    rm -f requirements.txt
    rm -f rmcache.sh
    rm -f todo.txt

    chmod a+x /usr/share/spkg/spkg
    ln -s /usr/share/spkg/spkg /usr/bin/spkg

    spkg build world
    spkg sync
}

upgrade() {
    echo -e "${Green}>>>${Reset}${Bold} Extracting sources ... "
    extract

    echo -e "${Green}>>>${Reset}${Bold} Installing spkg-gitspkg-git ... "
    rm -f /usr/bin/spkg
    rm -rf /usr/share/spkg/
    cp -r /tmp/target/spkg-main/ /usr/share/spkg/

    cd /usr/share/spkg/ || exit
    mv spkg.py spkg

    rm -rf build
    rm -rf data
    rm -rf resources
    rm -rf packages
    rm -f package.db
    rm -f spkg-installer.py
    rm -f requirements.txt
    rm -f rmcache.sh
    rm -f todo.txt

    chmod a+x /usr/share/spkg/spkg
    ln -s /usr/share/spkg/spkg /usr/bin/spkg

    spkg sync
}

remove() {
    read -rep $'\033[0;33m>>>\033[0m\e[1m Are you sure? This will remove spkg from your system. [Y/N] ' ans_s
    if [[ "${ans_s}" != "y" ]] && [[ "${ans_s}" != "Y" ]] && [[ "${ans_s}" != "j" ]] && [[ "${ans_s}" != "j" ]]; then
            echo -e "Aborting"
            exit
    fi

    echo -e "${Green}>>>${Reset}${Bold} Removing spkg-git ... "

    rm -rf /usr/share/spkg
    rm -f /usr/bin/spkg
    rm -rf /etc/spkg/
    rm -f /tmp/PKGBUILD
}

clean_tmp() {
    echo -e "${Green}>>>${Reset}${Bold} Cleaning temporary files ... "
    rm -rf /tmp/target*
    rm -f /tmp/PKGBUILD
}

if [ "$1" = "--install" ]; then
    inst
    clean_tmp

elif [ "$1" = "--upgrade" ]; then
    upgrade
    clean_tmp

elif [ "$1" = "--remove" ]; then
    remove
    clean_tmp
fi