#!/bin/bash

MISSING=""

if ! [ -x "$(command -v git)" ]; then
    echo "git manque et doit être installé"
    MISSING="${MISSING} git"
fi

if ! [ -x "$(command -v zsh)" ]; then
    echo "zsh manque et doit être installé"
    MISSING="${MISSING} zsh"
fi

if ! [ -x "$(command -v nvim)" ]; then
    echo "neovim manque et doit être installé"
    MISSING="${MISSING} neovim python3-venv python-neovim python3-neovim"
fi

if ! [ -x "$(command -v exa)" ]; then
    echo "exa manque et doit être installé"
    MISSING="${MISSING} exa"
fi

if ! [ -x "$(command -v fdfind)" ]; then
    echo "fdfind manque et doit être installé"
    MISSING="${MISSING} fd-find"
fi

if ! [ -x "$(command -v rg)" ]; then
    echo "ripgrep manque et doit être installé"
    MISSING="${MISSING} ripgrep"
fi

if ! [ -z "$MISSING" ]; then
    echo "Installation de $MISSING"
    sudo apt -y install $MISSING
fi

if ! [ -x "$HOME/.bin/starship" ]; then
    echo "Installation de starship"
    mkdir -p $HOME/.bin
    curl -sfL https://starship.rs/install.sh -o /tmp/install.sh
    chmod +x /tmp/install.sh
    /tmp/install.sh -y -b $HOME/.bin
    rm /tmp/install.sh
fi

if [ ! $SHELL = "/bin/zsh" ]; then
    sudo usermod $USER -s /bin/zsh && echo "Nouveau shell: zsh"
fi

if ! [ -d "$HOME/.cache/antibody" ]; then
    echo "Installation d'antibody"
    curl -sfL git.io/antibody -o /tmp/antibody.sh
    chmod +x /tmp/antibody.sh
    /tmp/antibody.sh -b $HOME/.bin
    rm /tmp/antibody.sh
    mkdir -p $HOME/.cache/antibody
fi

if [ ! -x $HOME/.bin/chezmoi ]; then
    echo "Installation de chezmoi"
    mkdir -p $HOME/.bin
    curl -sfL https://git.io/chezmoi -o /tmp/chezmoi.sh
    chmod +x /tmp/chezmoi.sh
    /tmp/chezmoi.sh -b $HOME/.bin -d
    rm /tmp/chezmoi.sh
fi

if [ ! -d $HOME/.local/share/chezmoi/.git ]; then
    echo "Application des dotfiles …"
    cd $HOME
    $HOME/.bin/chezmoi init --apply --verbose https://git.sysnove.net/jrabier/dotfiles
    echo "Application des dotfiles terminée"
else
    echo "Mise à jour des dotfiles"
    $HOME/.bin/chezmoi update -v
fi
