dotfiles/scripts/bootstrap
2020-11-22 23:18:30 -05:00

126 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
DOTS=$(dirname "$0")/..
cd "$DOTS" || (echo "Directory not found: $DOTS"; exit 1)
DOTS="$PWD"
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 ✓"
}
use_fisher() {
if ! (which fish > /dev/null)
then
echo "Skipping fisher: fish not installed"
elif ! (fish -c "which fisher" > /dev/null)
then
echo "Installing fisher..."
fish -c "curl -sL git.io/fisher | source && fisher install jorgebucaran/fisher"
fi
if (fish -c "which fisher" > /dev/null)
then
fish -c "fisher update"
echo "fisher ✓"
fi
}
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 ✓"
}
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 " - install_python"
echo " - install_rust"
echo ""