#!/usr/bin/env sh

cd -P -- "$(readlink -e "$(dirname "$0")")" || exit 255

echo "=> Checking dependencies..."

command -v stow >/dev/null 2>&1 || { echo "Please install GNU Stow!"; exit 1; }

sleep 0.5
echo "=> Determining OS..."

if [ "$(uname -o)" = "Android" ] || [ "$(lsb_release -si)" = "Fedora" ]; then
    set -- "nvim" "scripts" "zsh"
    INSTALL="pkg install"
elif [ "$(lsb_release -si)" = "Debian" ] || [ "$(lsb_release -si)" = "Ubuntu" ]; then
    set -- "scripts" "zsh"
    INSTALL="sudo apt install"
elif [ "$(lsb_release -si)" = "Artix" ]; then
    set -- "alacritty" "mako" "nvim" "scripts" "sway" "swaylock" "swaynag" "waybar" "zsh"
    INSTALL="sudo pacman -S"
else
    echo "OS not supported!"
    exit 1
fi

sleep 0.5
echo "=> Installing dotfile packages..."

for pkg in "$@"; do
    sleep 0.1
    echo "  -> Stowing $pkg"
    
    # Symlink only the individual files instead of the entire directory
    [ "$pkg" = "zsh" ] && mkdir -p "$HOME/.config/$pkg" 
    [ "$pkg" = "scripts" ] && mkdir -p "$HOME/.local/bin"
    [ "$pkg" = "nvim" ] && NVIM=1

    stow -t "$HOME" --ignore="README.md" "$pkg"
done

if [ $NVIM -eq 1 ] && [ ! -f "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim ]; then
    sleep 0.5
    echo "=> Installing vim-plug and plugins for Neovim"
    
    command -v nvim >/dev/null 2>&1 || $INSTALL nvim
    curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
        https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
    nvim --headless +PlugInstall +qa
fi

sleep 0.5
echo "=> Done!"