From d9cdc20ce61d561cafd39435e16ce7f394fb987b Mon Sep 17 00:00:00 2001 From: Andrew Janke Date: Wed, 23 Sep 2015 18:41:48 -0400 Subject: [PATCH] installer: use timestamped backups to preserve all old zshrcs --- tools/install.sh | 24 ++++++++++++++++++++++++ tools/uninstall.sh | 21 ++++++++++----------- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/tools/install.sh b/tools/install.sh index 8cba52085..d6bd07afc 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -58,6 +58,30 @@ main() { exit 1 } + # Keep most recent old .zshrc at .zshrc.pre-oh-my-zsh, and older ones + # with datestamp of installation that moved them aside, so we never actually + # destroy a user's original zshrc + printf "${BLUE}Looking for an existing zsh config...${NORMAL}\n" + # Must use this exact name so uninstall.sh can find it + OLD_ZSHRC=~/.zshrc.pre-oh-my-zsh + if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then + if [ -e "$OLD_ZSHRC" ]; then + TIMESTAMP="$(date +%Y-%m-%d_%H-%M-%S)" + OLD_OLD_ZSHRC="${OLD_ZSHRC}-${TIMESTAMP}" + if [ -e "$OLD_OLD_ZSHRC" ]; then + echo "Error: $OLD_OLD_ZSHRC exists" >&2 + echo "Just re-run this again in a couple seconds" &>2 + exit 1 + fi + mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}" + # intentional omitted newline + printf "${YELLOW}Found old ~/.zshrc.pre-oh-my-zsh.${NORMAL} " + printf "${GREEN}Backing up to ${OLD_OLD_ZSHRC}${NORMAL}\n" + fi + printf "${YELLOW}Found ~/.zshrc.${NORMAL} ${GREEN}Backing up to ${OLD_ZSHRC}${NORMAL}\n" + mv ~/.zshrc "$OLD_ZSHRC"; + fi + # The Windows (MSYS) Git is not compatible with normal use on cygwin if [ "$OSTYPE" = cygwin ]; then if git --version | grep msysgit > /dev/null; then diff --git a/tools/uninstall.sh b/tools/uninstall.sh index 9ad1b64a6..add6d7e30 100644 --- a/tools/uninstall.sh +++ b/tools/uninstall.sh @@ -6,24 +6,23 @@ then fi echo "Removing ~/.oh-my-zsh" -if [ -d ~/.oh-my-zsh ] -then +if [ -d ~/.oh-my-zsh ]; then rm -rf ~/.oh-my-zsh fi echo "Looking for original zsh config..." -if [ -f ~/.zshrc.pre-oh-my-zsh ] || [ -h ~/.zshrc.pre-oh-my-zsh ] -then - echo "Found ~/.zshrc.pre-oh-my-zsh -- Restoring to ~/.zshrc"; +ZSHRC_ORIG=~/.zshrc.pre-oh-my-zsh +if [ -e "$ZSHRC_ORIG" ]; then + echo "Found $ZSHRC_ORIG -- Restoring to ~/.zshrc"; - if [ -f ~/.zshrc ] || [ -h ~/.zshrc ] - then - ZSHRC_SAVE=".zshrc.omz-uninstalled-`date +%Y%m%d%H%M%S`"; - echo "Found ~/.zshrc -- Renaming to ~/${ZSHRC_SAVE}"; - mv ~/.zshrc ~/${ZSHRC_SAVE}; + if [ -e ~/.zshrc ]; then + TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S) + ZSHRC_SAVE=~/.zshrc.omz-uninstalled-$TIMESTAMP; + echo "Found ~/.zshrc -- Renaming to ${ZSHRC_SAVE}"; + mv ~/.zshrc ${ZSHRC_SAVE}; fi - mv ~/.zshrc.pre-oh-my-zsh ~/.zshrc; + mv "$ZSHRC_ORIG" ~/.zshrc; source ~/.zshrc; else