#!/bin/sh

DOTS=$(dirname "$0")/..
cd "$DOTS" || (echo "Directory not found: $DOTS"; exit 1)
DOTS="$PWD"

check_for_zsh() {
    if ! (echo "$SHELL" | grep zsh > /dev/null)
    then
        echo "Switch to using zsh before continuing"
        echo ""
        echo "MacOS Instructions:"
        echo "System Preferences > Users & Groups > Unlock"
        echo "Right-click on user, Advanced Options..."
        echo "Login shell: /bin/zsh"
        exit 1
    fi

    echo "zsh ✓"
}

check_for_ohmyzsh() {
    if [ ! -d ~/.oh-my-zsh ]
    then
        echo "oh-my-zsh ✕"
        echo ""
        echo "Install oh-my-zsh before continuing"
        echo "You can run the script: install_ohmyzsh"
        echo ""
        exit 1
    fi

    echo "oh-my-zsh ✓"
}

install_xcode() {
    if [ "$(uname)" = "Darwin" ]
    then
        if ! (xcode-select --version > /dev/null 2>&1)
        then
            xcode-select --install
        fi
        echo "xcode ✓"
    fi
}

install_homebrew() {
    if ! (which /usr/local/bin/brew > /dev/null)
    then
        printf "homebrew ✕\n\n"
        printf "\ninstalling homebrew..."
        /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
        echo ""
    fi

    echo "homebrew ✓"
}

install_brews() {
    brewfile=$DOTS/homebrew/Brewfile
    if ! (/usr/local/bin/brew bundle check --file "$brewfile" > /dev/null)
    then
        /usr/local/bin/brew bundle --file "$brewfile"
    fi

    echo "brews installed ✓"
}

use_fish_shell() {
    if ! (which fish > /dev/null)
    then
        echo "Install fish before continuing"
        echo "You can do: brew install fish"
        echo "Or add fish to homebrew/Brewfile and rerun"
        exit 1
    fi
    FISH_SHELL=$(which fish)
    if ! (cat /etc/shells | grep $FISH_SHELL > /dev/null)
    then
        echo "Modifying /etc/shells"
        echo "Requires sudo password"
        sudo echo $FISH_SHELL >> /etc/shells
    fi
    if ! (echo "$SHELL" | grep fish > /dev/null)
    then
        echo "Changing default shell to fish"
        echo "Requires sudo password"
        sudo chsh -s $FISH_SHELL
    fi

    echo "fish ✓"
}

setup_tmux() {
    if [[ ! -d ~/.tmux/plugins/tpm ]]; then
        git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
    fi

    echo "tmux ✓"
}

install_gitmux() {
    if ! (which gitmux > /dev/null)
    then
        printf "gitmux ✕\n\n"
        printf "\ninstalling gitmux..."
        /bin/bash -c "$(curl -L -o gitmux.tar.gz https://github.com/arl/gitmux/releases/download/v0.7.4/gitmux_0.7.4_macOS_amd64.tar.gz)"
        tar -xzf gitmux.tar.gz gitmux
        mkdir -p ~/.local/bin
        mv gitmux ~/.local/bin/
        rm gitmux.tar.gz
        echo ""
    fi

    echo "gitmux ✓"
}

install_spacemacs() {
    emacsdir=~/.emacs.d
    if ! (git -C "$emacsdir" pull > /dev/null 2>&1)
    then
       git clone -b develop https://github.com/syl20bnr/spacemacs "$emacsdir"
    fi

    echo "spacemacs ✓"
}

setup_poetry() {
    poetry completions fish > $(brew --prefix)/share/fish/vendor_completions.d/poetry.fish
}

printf "\nbootstrapping...\n\n"
install_xcode
install_homebrew
install_brews
setup_tmux
install_gitmux
setup_poetry
use_fish_shell
("$DOTS/scripts/setup_symlinks")

echo ""
echo "consider running other scripts:"
echo " - install_casks"
echo " - configure_macos"
echo " - setup_keybase"
echo " - install_python"
echo " - install_rust"
echo " - install_cargos"
echo ""