original install script

This commit is contained in:
Philippe-Adrien Nousse 2018-07-15 08:59:56 +02:00
parent 2e439a7d4e
commit 117e00a55e

View File

@ -20,14 +20,15 @@ main() {
NORMAL="" NORMAL=""
fi fi
# Only enable exit-on-error after the non-critical colorization stuff, # Only enable exit-on-error after the non-critical colorization
stuff,
# which may fail on systems lacking tput or terminfo # which may fail on systems lacking tput or terminfo
set -e set -e
if ! command -v zsh >/dev/null 2>&1; then if ! command -v zsh >/dev/null 2>&1; then
printf "${YELLOW}Zsh is not installed!${NORMAL} Installing zsh\n" printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh
sudo apt-get install zsh -y first!\n"
exit
fi fi
if [ ! -n "$ZSH" ]; then if [ ! -n "$ZSH" ]; then
@ -40,14 +41,16 @@ main() {
exit exit
fi fi
printf "${BLUE}Cloning Oh My Zsh...${NORMAL}\n" # Prevent the cloned repository from having insecure permissions.
sudo apt-get install -y fonts-powerline Failing to do
# so causes compinit() calls to fail with "command not found:
# Prevent the cloned repository from having insecure permissions. Failing to do compdef" errors
# so causes compinit() calls to fail with "command not found: compdef" errors # for users with insecure umasks (e.g., "002", allowing group
# for users with insecure umasks (e.g., "002", allowing group writability). Note writability). Note
# that this will be ignored under Cygwin by default, as Windows ACLs take # that this will be ignored under Cygwin by default, as Windows ACLs
# precedence over umasks except for filesystems mounted with option "noacl". take
# precedence over umasks except for filesystems mounted with option
"noacl".
umask g-w,o-w umask g-w,o-w
printf "${BLUE}Cloning Oh My Zsh...${NORMAL}\n" printf "${BLUE}Cloning Oh My Zsh...${NORMAL}\n"
@ -59,11 +62,13 @@ main() {
if [ "$OSTYPE" = cygwin ]; then if [ "$OSTYPE" = cygwin ]; then
if git --version | grep msysgit > /dev/null; then if git --version | grep msysgit > /dev/null; then
echo "Error: Windows/MSYS Git is not supported on Cygwin" 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" echo "Error: Make sure the Cygwin git package is installed and
is first on the path"
exit 1 exit 1
fi fi
fi fi
env git clone --depth=1 http://git.adphi.net/Adphi/oh-my-zsh.git $ZSH || { 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" printf "Error: git clone of oh-my-zsh repo failed\n"
exit 1 exit 1
} }
@ -71,28 +76,35 @@ main() {
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
cp $ZSH/templates/zshrc.zsh-template ~/.zshrc ~/.zshrc${NORMAL}\n"
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=$(expr "$SHELL" : '.*/\(.*\)') TEST_CURRENT_SHELL=$(expr "$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 hash chsh >/dev/null 2>&1; then if hash chsh >/dev/null 2>&1; 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
printf "${BLUE}Please manually change your default shell to zsh!${NORMAL}\n" system does not have chsh.\n"
printf "${BLUE}Please manually change your default shell to
zsh!${NORMAL}\n"
fi fi
fi fi
@ -102,17 +114,20 @@ main() {
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 and t-shirts at https://shop.planetargon.com.' echo 'p.p.s. Get stickers and t-shirts at
https://shop.planetargon.com.'
echo '' echo ''
printf "${NORMAL}" printf "${NORMAL}"
env zsh env zsh -l
} }
main main