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
This commit is contained in:
Andrew Janke 2015-02-27 23:11:00 -05:00 committed by Andrew Janke
parent 3ea3384186
commit 502f08b5e1
2 changed files with 28 additions and 7 deletions

View file

@ -10,9 +10,21 @@ if [ -d "$ZSH" ]; then
fi fi
echo "\033[0;34mCloning Oh My Zsh...\033[0m" 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 || { hash git >/dev/null 2>&1 || {
echo "git not installed" echo "Error: git is not installed"
exit 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" echo "\033[0;34mLooking for an existing zsh config...\033[0m"
@ -34,8 +46,13 @@ export PATH=\"$PATH\"
TEST_CURRENT_SHELL=$(expr "$SHELL" : '.*/\(.*\)') TEST_CURRENT_SHELL=$(expr "$SHELL" : '.*/\(.*\)')
if [ "$TEST_CURRENT_SHELL" != "zsh" ]; then 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" echo "\033[0;34mTime to change your default shell to zsh!\033[0m"
chsh -s $(grep /zsh$ /etc/shells | tail -1) 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 fi
unset TEST_CURRENT_SHELL unset TEST_CURRENT_SHELL

View file

@ -1,5 +1,5 @@
echo "Removing ~/.oh-my-zsh" echo "Removing ~/.oh-my-zsh"
if [[ -d ~/.oh-my-zsh ]] if [ -d ~/.oh-my-zsh ]
then then
rm -rf ~/.oh-my-zsh rm -rf ~/.oh-my-zsh
fi fi
@ -20,9 +20,13 @@ then
source ~/.zshrc; source ~/.zshrc;
else else
echo "Switching back to bash" if hash chsh >/dev/null 2>&1
chsh -s /bin/bash then
source /etc/profile 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 fi
echo "Thanks for trying out Oh My Zsh. It's been uninstalled." echo "Thanks for trying out Oh My Zsh. It's been uninstalled."