From 502f08b5e19716d43a7ec8b006178a7b017f68cd Mon Sep 17 00:00:00 2001
From: Andrew Janke <janke@pobox.com>
Date: Fri, 27 Feb 2015 23:11:00 -0500
Subject: [PATCH] Add Cygwin support to installer. * Balk at incompatible
 Windows/MSYS git * Test for chsh presence before trying to use it * Replace
 non-portable `[[ ... ]]` and `[ x = *pattern* ]` constructs

---
 tools/install.sh   | 23 ++++++++++++++++++++---
 tools/uninstall.sh | 12 ++++++++----
 2 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/tools/install.sh b/tools/install.sh
index c83a6f23d..1da261cf9 100755
--- a/tools/install.sh
+++ b/tools/install.sh
@@ -10,9 +10,21 @@ if [ -d "$ZSH" ]; then
 fi
 
 echo "\033[0;34mCloning Oh My Zsh...\033[0m"
-hash git >/dev/null 2>&1 && env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $ZSH || {
-  echo "git not installed"
-  exit
+hash git >/dev/null 2>&1 || {
+  echo "Error: git is not installed"
+  exit 1
+}
+# The Windows (MSYS) Git is not compatible with normal use on cygwin
+if [ "$OSTYPE" = cygwin ]; then
+  if git --version | grep msysgit > /dev/null; then
+    echo "Error: Windows/MSYS Git is not supported on Cygwin"
+    echo "Error: Make sure the Cygwin git package is installed and is first on the path"
+    exit 1
+  fi
+fi
+env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $ZSH || {
+  echo "Error: git clone of oh-my-zsh repo failed"
+  exit 1
 }
 
 echo "\033[0;34mLooking for an existing zsh config...\033[0m"
@@ -34,8 +46,13 @@ export PATH=\"$PATH\"
 
 TEST_CURRENT_SHELL=$(expr "$SHELL" : '.*/\(.*\)')
 if [ "$TEST_CURRENT_SHELL" != "zsh" ]; then
+  if hash chsh >/dev/null 2>&1; then
     echo "\033[0;34mTime to change your default shell to zsh!\033[0m"
     chsh -s $(grep /zsh$ /etc/shells | tail -1)
+  else
+    echo "I can't change your shell automatically because this system does not have chsh."
+    echo "Please edit /etc/passwd to set your default shell to zsh."
+  fi
 fi
 unset TEST_CURRENT_SHELL
 
diff --git a/tools/uninstall.sh b/tools/uninstall.sh
index 41d601576..23bfac0eb 100644
--- a/tools/uninstall.sh
+++ b/tools/uninstall.sh
@@ -1,5 +1,5 @@
 echo "Removing ~/.oh-my-zsh"
-if [[ -d ~/.oh-my-zsh ]]
+if [ -d ~/.oh-my-zsh ]
 then
   rm -rf ~/.oh-my-zsh
 fi
@@ -20,9 +20,13 @@ then
 
   source ~/.zshrc;
 else
-  echo "Switching back to bash"
-  chsh -s /bin/bash
-  source /etc/profile
+  if hash chsh >/dev/null 2>&1
+  then
+    echo "Switching back to bash"
+    chsh -s /bin/bash
+  else
+    echo "You can edit /etc/passwd to switch your default shell back to bash"
+  fi
 fi
 
 echo "Thanks for trying out Oh My Zsh. It's been uninstalled."