installer: use tabs to allow future heredocs

This will allow us to use tab stripping heredocs with `<<-'.
See http://www.tldp.org/LDP/abs/html/here-docs.html#EX71A

Add editorconfig file to enforce this style.
See http://editorconfig.org for more information.
This commit is contained in:
Marc Cornellà 2016-08-09 02:28:47 +02:00
parent 9a832cccef
commit 73ef051aae
2 changed files with 107 additions and 97 deletions

10
.editorconfig Normal file
View file

@ -0,0 +1,10 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
[*.sh]
indent_size = 4
indent_style = tab

View file

@ -3,116 +3,116 @@ set -e
# Test command existence (POSIX compatible) # Test command existence (POSIX compatible)
command_exists() { command_exists() {
command -v "$@" >/dev/null 2>&1 command -v "$@" >/dev/null 2>&1
} }
main() { main() {
# Use colors, but only if connected to a terminal, and that terminal # Use colors, but only if connected to a terminal, and that terminal
# supports them. # supports them.
if command_exists tput; then if command_exists tput; then
ncolors=$(tput colors) ncolors=$(tput colors)
fi fi
if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
RED="$(tput setaf 1)"
GREEN="$(tput setaf 2)"
YELLOW="$(tput setaf 3)"
BLUE="$(tput setaf 4)"
BOLD="$(tput bold)"
NORMAL="$(tput sgr0)"
else
RED=""
GREEN=""
YELLOW=""
BLUE=""
BOLD=""
NORMAL=""
fi
if ! command_exists zsh; then if [ -t 1 ] && [ -n "$ncolors" ] && [ "$ncolors" -ge 8 ]; then
printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh first!\n" RED="$(tput setaf 1)"
exit 1 GREEN="$(tput setaf 2)"
fi YELLOW="$(tput setaf 3)"
BLUE="$(tput setaf 4)"
BOLD="$(tput bold)"
NORMAL="$(tput sgr0)"
else
RED=""
GREEN=""
YELLOW=""
BLUE=""
BOLD=""
NORMAL=""
fi
if [ ! -n "$ZSH" ]; then if ! command_exists zsh; then
ZSH=~/.oh-my-zsh printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh first!\n"
fi exit 1
fi
if [ -d "$ZSH" ]; then if [ ! -n "$ZSH" ]; then
printf "${YELLOW}You already have Oh My Zsh installed.${NORMAL}\n" ZSH=~/.oh-my-zsh
printf "You'll need to remove $ZSH if you want to re-install.\n" fi
exit 1
fi
# Prevent the cloned repository from having insecure permissions. Failing to do if [ -d "$ZSH" ]; then
# so causes compinit() calls to fail with "command not found: compdef" errors printf "${YELLOW}You already have Oh My Zsh installed.${NORMAL}\n"
# for users with insecure umasks (e.g., "002", allowing group writability). Note printf "You'll need to remove $ZSH if you want to re-install.\n"
# that this will be ignored under Cygwin by default, as Windows ACLs take exit 1
# precedence over umasks except for filesystems mounted with option "noacl". fi
umask g-w,o-w
printf "${BLUE}Cloning Oh My Zsh...${NORMAL}\n" # Prevent the cloned repository from having insecure permissions. Failing to do
command_exists git || { # so causes compinit() calls to fail with "command not found: compdef" errors
echo "Error: git is not installed" # for users with insecure umasks (e.g., "002", allowing group writability). Note
exit 1 # that this will be ignored under Cygwin by default, as Windows ACLs take
} # precedence over umasks except for filesystems mounted with option "noacl".
# The Windows (MSYS) Git is not compatible with normal use on cygwin umask g-w,o-w
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" || {
printf "Error: git clone of oh-my-zsh repo failed\n"
exit 1
}
printf "${BLUE}Cloning Oh My Zsh...${NORMAL}\n"
command_exists git || {
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" || {
printf "Error: git clone of oh-my-zsh repo failed\n"
exit 1
}
printf "${BLUE}Looking for an existing zsh config...${NORMAL}\n" printf "${BLUE}Looking for an existing zsh config...${NORMAL}\n"
if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then
printf "${YELLOW}Found ~/.zshrc.${NORMAL} ${GREEN}Backing up to ~/.zshrc.pre-oh-my-zsh${NORMAL}\n"; printf "${YELLOW}Found ~/.zshrc.${NORMAL} ${GREEN}Backing up to ~/.zshrc.pre-oh-my-zsh${NORMAL}\n";
mv ~/.zshrc ~/.zshrc.pre-oh-my-zsh; mv ~/.zshrc ~/.zshrc.pre-oh-my-zsh;
fi fi
printf "${BLUE}Using the Oh My Zsh template file and adding it to ~/.zshrc${NORMAL}\n" printf "${BLUE}Using the Oh My Zsh template file and adding it to ~/.zshrc${NORMAL}\n"
cp "$ZSH"/templates/zshrc.zsh-template ~/.zshrc cp "$ZSH/templates/zshrc.zsh-template" ~/.zshrc
sed "/^export ZSH=/ c\\ sed "/^export ZSH=/ c\\
export ZSH=\"$ZSH\" export ZSH=\"$ZSH\"
" ~/.zshrc > ~/.zshrc-omztemp " ~/.zshrc > ~/.zshrc-omztemp
mv -f ~/.zshrc-omztemp ~/.zshrc mv -f ~/.zshrc-omztemp ~/.zshrc
# If this user's login shell is not already "zsh", attempt to switch. # If this user's login shell is not already "zsh", attempt to switch.
TEST_CURRENT_SHELL=$(basename "$SHELL") TEST_CURRENT_SHELL=$(basename "$SHELL")
if [ "$TEST_CURRENT_SHELL" != "zsh" ]; then if [ "$TEST_CURRENT_SHELL" != "zsh" ]; then
# If this platform provides a "chsh" command (not Cygwin), do it, man! # If this platform provides a "chsh" command (not Cygwin), do it, man!
if command_exists chsh; then if command_exists chsh; then
printf "${BLUE}Time to change your default shell to zsh!${NORMAL}\n" printf "${BLUE}Time to change your default shell to zsh!${NORMAL}\n"
chsh -s $(grep /zsh$ /etc/shells | tail -1) chsh -s $(grep /zsh$ /etc/shells | tail -1)
# Else, suggest the user do so manually. # Else, suggest the user do so manually.
else else
printf "I can't change your shell automatically because this system does not have chsh.\n" printf "I can't change your shell automatically because this system does not have chsh.\n"
printf "${BLUE}Please manually change your default shell to zsh!${NORMAL}\n" printf "${BLUE}Please manually change your default shell to zsh!${NORMAL}\n"
fi fi
fi fi
printf "${GREEN}" printf "${GREEN}"
echo ' __ __ ' echo ' __ __ '
echo ' ____ / /_ ____ ___ __ __ ____ _____/ /_ ' echo ' ____ / /_ ____ ___ __ __ ____ _____/ /_ '
echo ' / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ ' echo ' / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ '
echo '/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / ' echo '/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / '
echo '\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ ' echo '\____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ '
echo ' /____/ ....is now installed!' echo ' /____/ ....is now installed!'
echo '' echo ''
echo '' echo ''
echo 'Please look over the ~/.zshrc file to select plugins, themes, and options.' echo 'Please look over the ~/.zshrc file to select plugins, themes, and options.'
echo '' echo ''
echo 'p.s. Follow us at https://twitter.com/ohmyzsh' echo 'p.s. Follow us at https://twitter.com/ohmyzsh'
echo '' echo ''
echo 'p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh' echo 'p.p.s. Get stickers, shirts, and coffee mugs at https://shop.planetargon.com/collections/oh-my-zsh'
echo '' echo ''
printf "${NORMAL}" printf "${NORMAL}"
env zsh -l env zsh -l
} }
main main