#!/bin/bash set -eu # Check for git if ! command -v git > /dev/null; then echo "git is not installed, please install git and try again" exit 1 fi # Set colors if command -v tput > /dev/null; then YELLOW="$(tput setaf 3)" GREEN="$(tput setaf 2)" NC="$(tput sgr0)" elif [ -n "$TERMUX_VERSION" ]; then YELLOW="" GREEN="" NC="(B" fi # Avoiding copy pasting this over and over g() { git -C "$REPO" "$@"; } # shellcheck disable=SC2016 REPO_ABBR='echo ${REPO/"$HOME"/"~"}' # `git pull` everything mentioned in the REPOS_TO_UPDATE variable IFS=: read -ra REPOS_TO_UPDATE_ARR <<< "${REPOS_TO_UPDATE:-}:${DOCS_DIR:-}:$HOME/bin" for REPO in "${REPOS_TO_UPDATE_ARR[@]}"; do if [ -n "$REPO" ]; then if g rev-parse > /dev/null 2>&1; then echo " ${GREEN}Pulling $(eval "$REPO_ABBR")‥${NC}" g pull g diff --quiet || echo "${YELLOW}Warning: Working tree for $(eval "$REPO_ABBR") is dirty${NC}" fi fi UPDATED_STUFF=true done # check for dotfiles updates ${UPDATED_STUFF:-false} && echo echo " ${GREEN}Updating dotfiles…${NC}" dotfiles pull dotfiles diff --quiet || echo "${YELLOW}Warning: Working tree for dotfiles is dirty${NC}"