浏览代码

Merge pull request #3664 from apjanke/installer-portable-colors

installer: Use printf and terminfo for portability
Robby Russell 9 年之前
父节点
当前提交
918d26e7db
共有 2 个文件被更改,包括 77 次插入31 次删除
  1. 45 20
      tools/install.sh
  2. 32 11
      tools/upgrade.sh

+ 45 - 20
tools/install.sh

@@ -1,8 +1,26 @@
 set -e
 set -e
 
 
+# Use colors, but only if connected to a terminal, and that terminal
+# supports them.
+ncolors=$(tput colors)
+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
 CHECK_ZSH_INSTALLED=$(grep /zsh$ /etc/shells | wc -l)
 CHECK_ZSH_INSTALLED=$(grep /zsh$ /etc/shells | wc -l)
 if [ ! $CHECK_ZSH_INSTALLED -ge 1 ]; then
 if [ ! $CHECK_ZSH_INSTALLED -ge 1 ]; then
-  echo "\033[0;33m Zsh is not installed!\033[0m Please install zsh first!"
+  printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh first!\n"
   exit
   exit
 fi
 fi
 unset CHECK_ZSH_INSTALLED
 unset CHECK_ZSH_INSTALLED
@@ -12,7 +30,8 @@ if [ ! -n "$ZSH" ]; then
 fi
 fi
 
 
 if [ -d "$ZSH" ]; then
 if [ -d "$ZSH" ]; then
-  echo "\033[0;33mYou already have Oh My Zsh installed.\033[0m You'll need to remove $ZSH if you want to install"
+  printf "${YELLOW}You already have Oh My Zsh installed.${NORMAL}\n"
+  printf "You'll need to remove $ZSH if you want to re-install.\n"
   exit
   exit
 fi
 fi
 
 
@@ -23,26 +42,26 @@ fi
 # precedence over umasks except for filesystems mounted with option "noacl".
 # precedence over umasks except for filesystems mounted with option "noacl".
 umask g-w,o-w
 umask g-w,o-w
 
 
-echo "\033[0;34mCloning Oh My Zsh...\033[0m"
+printf "${BLUE}Cloning Oh My Zsh...${NORMAL}\n"
 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 && env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $ZSH || {
-  echo "git not installed"
+  printf "git not installed\n"
   exit
   exit
 }
 }
 
 
-echo "\033[0;34mLooking for an existing zsh config...\033[0m"
+printf "${BLUE}Looking for an existing zsh config...${NORMAL}\n"
 if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then
 if [ -f ~/.zshrc ] || [ -h ~/.zshrc ]; then
-  echo "\033[0;33mFound ~/.zshrc.\033[0m \033[0;32mBacking up to ~/.zshrc.pre-oh-my-zsh\033[0m";
+  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
 
 
-echo "\033[0;34mUsing the Oh My Zsh template file and adding it to ~/.zshrc\033[0m"
+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
 
 
-echo "\033[0;34mCopying your current PATH and adding it to the end of ~/.zshrc for you.\033[0m"
+printf "${BLUE}Copying your current PATH and adding it to the end of ~/.zshrc for you.${NORMAL}\n"
 sed "/export PATH=/ c\\
 sed "/export PATH=/ c\\
 export PATH=\"$PATH\"
 export PATH=\"$PATH\"
 " ~/.zshrc > ~/.zshrc-omztemp
 " ~/.zshrc > ~/.zshrc-omztemp
@@ -52,22 +71,28 @@ mv -f ~/.zshrc-omztemp ~/.zshrc
 if [ "$(expr "$SHELL" : '.*/\(.*\)')" != "zsh" ]; then
 if [ "$(expr "$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 hash chsh >/dev/null 2>&1; then
   if hash chsh >/dev/null 2>&1; then
-    echo "\033[0;34mTime to change your default shell to zsh!\033[0m"
+    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
-    echo "\033[0;34mPlease manually change your default shell to zsh!\033[0m"
+    printf "${BLUE}Please manually change your default shell to zsh!${NORMAL}\n"
   fi
   fi
 fi
 fi
 
 
-echo "\033[0;32m"'         __                                     __   '"\033[0m"
-echo "\033[0;32m"'  ____  / /_     ____ ___  __  __   ____  _____/ /_  '"\033[0m"
-echo "\033[0;32m"' / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \ '"\033[0m"
-echo "\033[0;32m"'/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / / '"\033[0m"
-echo "\033[0;32m"'\____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/  '"\033[0m"
-echo "\033[0;32m"'                        /____/                       ....is now installed!'"\033[0m"
-echo "\n\n \033[0;32mPlease look over the ~/.zshrc file to select plugins, themes, and options.\033[0m"
-echo "\n\n \033[0;32mp.s. Follow us at http://twitter.com/ohmyzsh.\033[0m"
-echo "\n\n \033[0;32mp.p.s. Get stickers and t-shirts at http://shop.planetargon.com.\033[0m"
+printf "${GREEN}"
+echo '         __                                     __   '
+echo '  ____  / /_     ____ ___  __  __   ____  _____/ /_  '
+echo ' / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \ '
+echo '/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / / '
+echo '\____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/  '
+echo '                        /____/                       ....is now installed!'
+echo ''
+echo ''
+echo 'Please look over the ~/.zshrc file to select plugins, themes, and options.'
+echo ''
+echo 'p.s. Follow us at https://twitter.com/ohmyzsh.'
+echo ''
+echo 'p.p.s. Get stickers and t-shirts at http://shop.planetargon.com.'
+echo ''
+printf "${NORMAL}"
 env zsh
 env zsh
-. ~/.zshrc

+ 32 - 11
tools/upgrade.sh

@@ -1,16 +1,37 @@
-printf '\033[0;34m%s\033[0m\n' "Upgrading Oh My Zsh"
+
+# Use colors, but only if connected to a terminal, and that terminal
+# supports them.
+ncolors=$(tput colors)
+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
+
+printf "${BLUE}%s${NORMAL}\n" "Upgrading Oh My Zsh"
 cd "$ZSH"
 cd "$ZSH"
 if git pull --rebase --stat origin master
 if git pull --rebase --stat origin master
 then
 then
-  printf '\033[0;32m%s\033[0m\n' '         __                                     __   '
-  printf '\033[0;32m%s\033[0m\n' '  ____  / /_     ____ ___  __  __   ____  _____/ /_  '
-  printf '\033[0;32m%s\033[0m\n' ' / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \ '
-  printf '\033[0;32m%s\033[0m\n' '/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / / '
-  printf '\033[0;32m%s\033[0m\n' '\____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/  '
-  printf '\033[0;32m%s\033[0m\n' '                        /____/                       '
-  printf '\033[0;34m%s\033[0m\n' 'Hooray! Oh My Zsh has been updated and/or is at the current version.'
-  printf '\033[0;34m%s\033[1m%s\033[0m\n' 'To keep up on the latest news and updates, follow us on twitter: ' 'https://twitter.com/ohmyzsh'
-  printf '\033[0;34m%s\033[1m%s\033[0m\n' 'Get your Oh My Zsh swag at: ' 'http://shop.planetargon.com/'
+  printf '%s' "$GREEN"
+  printf '%s\n' '         __                                     __   '
+  printf '%s\n' '  ____  / /_     ____ ___  __  __   ____  _____/ /_  '
+  printf '%s\n' ' / __ \/ __ \   / __ `__ \/ / / /  /_  / / ___/ __ \ '
+  printf '%s\n' '/ /_/ / / / /  / / / / / / /_/ /    / /_(__  ) / / / '
+  printf '%s\n' '\____/_/ /_/  /_/ /_/ /_/\__, /    /___/____/_/ /_/  '
+  printf '%s\n' '                        /____/                       '
+  printf "${BLUE}%s\n" "Hooray! Oh My Zsh has been updated and/or is at the current version."
+  printf "${BLUE}${BOLD}%s${NORMAL}\n" "To keep up on the latest news and updates, follow us on twitter: https://twitter.com/ohmyzsh"
+  printf "${BLUE}${BOLD}%s${NORMAL}\n" "Get your Oh My Zsh swag at:  http://shop.planetargon.com/"
 else
 else
-  printf '\033[0;31m%s\033[0m\n' 'There was an error updating. Try again later?'
+  printf "${RED}%s${NORMAL}\n" 'There was an error updating. Try again later?'
 fi
 fi