1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-02 22:20:06 +08:00

Fix install script (#3048)

This commit is contained in:
Wang Shidong 2019-09-12 14:11:18 +08:00 committed by GitHub
parent 898312174c
commit 7ba443f195
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -92,225 +92,230 @@ System="$(uname -s)"
# need_cmd {{{ # need_cmd {{{
need_cmd () { need_cmd () {
if ! hash "$1" &>/dev/null; then if ! hash "$1" &>/dev/null; then
error "Need '$1' (command not found)" error "Need '$1' (command not found)"
exit 1 exit 1
fi fi
} }
# }}} # }}}
# success/info/error/warn {{{ # success/info/error/warn {{{
msg() { msg() {
printf '%b\n' "$1" >&2 printf '%b\n' "$1" >&2
} }
success() { success() {
msg "${Green}[✔]${Color_off} ${1}${2}" msg "${Green}[✔]${Color_off} ${1}${2}"
} }
info() { info() {
msg "${Blue}[➭]${Color_off} ${1}${2}" msg "${Blue}[➭]${Color_off} ${1}${2}"
} }
error() { error() {
msg "${Red}[✘]${Color_off} ${1}${2}" msg "${Red}[✘]${Color_off} ${1}${2}"
exit 1 exit 1
} }
warn () { warn () {
msg "${Yellow}[⚠]${Color_off} ${1}${2}" msg "${Yellow}[⚠]${Color_off} ${1}${2}"
} }
# }}} # }}}
# echo_with_color {{{ # echo_with_color {{{
echo_with_color () { echo_with_color () {
printf '%b\n' "$1$2$Color_off" >&2 printf '%b\n' "$1$2$Color_off" >&2
} }
# }}} # }}}
# fetch_repo {{{ # fetch_repo {{{
fetch_repo () { fetch_repo () {
if [[ -d "$HOME/.SpaceVim" ]]; then if [[ -d "$HOME/.SpaceVim" ]]; then
info "Trying to update SpaceVim" info "Trying to update SpaceVim"
cd "$HOME/.SpaceVim" cd "$HOME/.SpaceVim"
git pull git pull
cd - > /dev/null 2>&1 cd - > /dev/null 2>&1
success "Successfully update SpaceVim" success "Successfully update SpaceVim"
else else
info "Trying to clone SpaceVim" info "Trying to clone SpaceVim"
git clone https://github.com/SpaceVim/SpaceVim.git "$HOME/.SpaceVim" git clone https://github.com/SpaceVim/SpaceVim.git "$HOME/.SpaceVim"
success "Successfully clone SpaceVim" if [ $? -eq 0 ]; then
fi success "Successfully clone SpaceVim"
else
error "Failed to clone SpaceVim"
exit 0
fi
fi
} }
# }}} # }}}
# install_vim {{{ # install_vim {{{
install_vim () { install_vim () {
if [[ -f "$HOME/.vimrc" ]]; then if [[ -f "$HOME/.vimrc" ]]; then
mv "$HOME/.vimrc" "$HOME/.vimrc_back" mv "$HOME/.vimrc" "$HOME/.vimrc_back"
success "Backup $HOME/.vimrc to $HOME/.vimrc_back" success "Backup $HOME/.vimrc to $HOME/.vimrc_back"
fi fi
if [[ -d "$HOME/.vim" ]]; then if [[ -d "$HOME/.vim" ]]; then
if [[ "$(readlink $HOME/.vim)" =~ \.SpaceVim$ ]]; then if [[ "$(readlink $HOME/.vim)" =~ \.SpaceVim$ ]]; then
success "Installed SpaceVim for vim" success "Installed SpaceVim for vim"
else else
mv "$HOME/.vim" "$HOME/.vim_back" mv "$HOME/.vim" "$HOME/.vim_back"
success "BackUp $HOME/.vim to $HOME/.vim_back" success "BackUp $HOME/.vim to $HOME/.vim_back"
ln -s "$HOME/.SpaceVim" "$HOME/.vim" ln -s "$HOME/.SpaceVim" "$HOME/.vim"
success "Installed SpaceVim for vim" success "Installed SpaceVim for vim"
fi
else
ln -s "$HOME/.SpaceVim" "$HOME/.vim"
success "Installed SpaceVim for vim"
fi fi
else
ln -s "$HOME/.SpaceVim" "$HOME/.vim"
success "Installed SpaceVim for vim"
fi
} }
# }}} # }}}
# install_package_manager {{{ # install_package_manager {{{
install_package_manager () { install_package_manager () {
if [[ ! -d "$HOME/.cache/vimfiles/repos/github.com/Shougo/dein.vim" ]]; then if [[ ! -d "$HOME/.cache/vimfiles/repos/github.com/Shougo/dein.vim" ]]; then
info "Install dein.vim" info "Install dein.vim"
git clone https://github.com/Shougo/dein.vim.git $HOME/.cache/vimfiles/repos/github.com/Shougo/dein.vim git clone https://github.com/Shougo/dein.vim.git $HOME/.cache/vimfiles/repos/github.com/Shougo/dein.vim
success "dein.vim installation done" success "dein.vim installation done"
fi fi
} }
# }}} # }}}
# install_neovim {{{ # install_neovim {{{
install_neovim () { install_neovim () {
if [[ -d "$HOME/.config/nvim" ]]; then if [[ -d "$HOME/.config/nvim" ]]; then
if [[ "$(readlink $HOME/.config/nvim)" =~ \.SpaceVim$ ]]; then if [[ "$(readlink $HOME/.config/nvim)" =~ \.SpaceVim$ ]]; then
success "Installed SpaceVim for neovim" success "Installed SpaceVim for neovim"
else
mv "$HOME/.config/nvim" "$HOME/.config/nvim_back"
success "BackUp $HOME/.config/nvim to $HOME/.config/nvim_back"
ln -s "$HOME/.SpaceVim" "$HOME/.config/nvim"
success "Installed SpaceVim for neovim"
fi
else else
mv "$HOME/.config/nvim" "$HOME/.config/nvim_back" mkdir -p "$HOME/.config"
success "BackUp $HOME/.config/nvim to $HOME/.config/nvim_back" ln -s "$HOME/.SpaceVim" "$HOME/.config/nvim"
ln -s "$HOME/.SpaceVim" "$HOME/.config/nvim" success "Installed SpaceVim for neovim"
success "Installed SpaceVim for neovim"
fi fi
else
mkdir -p "$HOME/.config"
ln -s "$HOME/.SpaceVim" "$HOME/.config/nvim"
success "Installed SpaceVim for neovim"
fi
} }
# }}} # }}}
# uninstall_vim {{{ # uninstall_vim {{{
uninstall_vim () { uninstall_vim () {
if [[ -d "$HOME/.vim" ]]; then if [[ -d "$HOME/.vim" ]]; then
if [[ "$(readlink $HOME/.vim)" =~ \.SpaceVim$ ]]; then if [[ "$(readlink $HOME/.vim)" =~ \.SpaceVim$ ]]; then
rm "$HOME/.vim" rm "$HOME/.vim"
success "Uninstall SpaceVim for vim" success "Uninstall SpaceVim for vim"
if [[ -d "$HOME/.vim_back" ]]; then if [[ -d "$HOME/.vim_back" ]]; then
mv "$HOME/.vim_back" "$HOME/.vim" mv "$HOME/.vim_back" "$HOME/.vim"
success "Recover from $HOME/.vim_back" success "Recover from $HOME/.vim_back"
fi fi
fi
fi
if [[ -f "$HOME/.vimrc_back" ]]; then
mv "$HOME/.vimrc_back" "$HOME/.vimrc"
success "Recover from $HOME/.vimrc_back"
fi fi
fi
if [[ -f "$HOME/.vimrc_back" ]]; then
mv "$HOME/.vimrc_back" "$HOME/.vimrc"
success "Recover from $HOME/.vimrc_back"
fi
} }
# }}} # }}}
# uninstall_neovim {{{ # uninstall_neovim {{{
uninstall_neovim () { uninstall_neovim () {
if [[ -d "$HOME/.config/nvim" ]]; then if [[ -d "$HOME/.config/nvim" ]]; then
if [[ "$(readlink $HOME/.config/nvim)" =~ \.SpaceVim$ ]]; then if [[ "$(readlink $HOME/.config/nvim)" =~ \.SpaceVim$ ]]; then
rm "$HOME/.config/nvim" rm "$HOME/.config/nvim"
success "Uninstall SpaceVim for neovim" success "Uninstall SpaceVim for neovim"
if [[ -d "$HOME/.config/nvim_back" ]]; then if [[ -d "$HOME/.config/nvim_back" ]]; then
mv "$HOME/.config/nvim_back" "$HOME/.config/nvim" mv "$HOME/.config/nvim_back" "$HOME/.config/nvim"
success "Recover from $HOME/.config/nvim_back" success "Recover from $HOME/.config/nvim_back"
fi fi
fi
fi fi
fi
} }
# }}} # }}}
# check_requirements {{{ # check_requirements {{{
check_requirements () { check_requirements () {
info "Checking Requirements for SpaceVim" info "Checking Requirements for SpaceVim"
if hash "git" &>/dev/null; then if hash "git" &>/dev/null; then
git_version=$(git --version) git_version=$(git --version)
success "Check Requirements: ${git_version}" success "Check Requirements: ${git_version}"
else
warn "Check Requirements : git"
fi
if hash "vim" &>/dev/null; then
is_vim8=$(vim --version | grep "Vi IMproved 8")
is_vim74=$(vim --version | grep "Vi IMproved 7.4")
if [ -n "$is_vim8" ]; then
success "Check Requirements: vim 8.0"
elif [ -n "$is_vim74" ]; then
success "Check Requirements: vim 7.4"
else else
if hash "nvim" &>/dev/null; then warn "Check Requirements : git"
success "Check Requirements: nvim"
else
warn "SpaceVim need vim 7.4 or above"
fi
fi fi
if hash "nvim" &>/dev/null; then if hash "vim" &>/dev/null; then
success "Check Requirements: nvim" is_vim8=$(vim --version | grep "Vi IMproved 8")
fi is_vim74=$(vim --version | grep "Vi IMproved 7.4")
else if [ -n "$is_vim8" ]; then
if hash "nvim" &>/dev/null; then success "Check Requirements: vim 8.0"
success "Check Requirements: nvim" elif [ -n "$is_vim74" ]; then
success "Check Requirements: vim 7.4"
else
if hash "nvim" &>/dev/null; then
success "Check Requirements: nvim"
else
warn "SpaceVim need vim 7.4 or above"
fi
fi
if hash "nvim" &>/dev/null; then
success "Check Requirements: nvim"
fi
else else
warn "Check Requirements : vim or nvim" if hash "nvim" &>/dev/null; then
success "Check Requirements: nvim"
else
warn "Check Requirements : vim or nvim"
fi
fi fi
fi info "Checking true colors support in terminal:"
info "Checking true colors support in terminal:" bash -c "$(curl -fsSL https://raw.githubusercontent.com/JohnMorales/dotfiles/master/colors/24-bit-color.sh)"
bash -c "$(curl -fsSL https://raw.githubusercontent.com/JohnMorales/dotfiles/master/colors/24-bit-color.sh)"
} }
# }}} # }}}
# usage {{{ # usage {{{
usage () { usage () {
echo "SpaceVim install script : V ${Version}" echo "SpaceVim install script : V ${Version}"
echo "" echo ""
echo "Usage : curl -sLf https://spacevim.org/install.sh | bash -s -- [option] [target]" echo "Usage : curl -sLf https://spacevim.org/install.sh | bash -s -- [option] [target]"
echo "" echo ""
echo " This is bootstrap script for SpaceVim." echo " This is bootstrap script for SpaceVim."
echo "" echo ""
echo "OPTIONS" echo "OPTIONS"
echo "" echo ""
echo " -i, --install install spacevim for vim or neovim" echo " -i, --install install spacevim for vim or neovim"
echo " -v, --version Show version information and exit" echo " -v, --version Show version information and exit"
echo " -u, --uninstall Uninstall SpaceVim" echo " -u, --uninstall Uninstall SpaceVim"
echo " -c, --checkRequirements checkRequirements for SpaceVim" echo " -c, --checkRequirements checkRequirements for SpaceVim"
echo "" echo ""
echo "EXAMPLE" echo "EXAMPLE"
echo "" echo ""
echo " Install SpaceVim for vim and neovim" echo " Install SpaceVim for vim and neovim"
echo "" echo ""
echo " curl -sLf https://spacevim.org/install.sh | bash" echo " curl -sLf https://spacevim.org/install.sh | bash"
echo "" echo ""
echo " Install SpaceVim for vim only or neovim only" echo " Install SpaceVim for vim only or neovim only"
echo "" echo ""
echo " curl -sLf https://spacevim.org/install.sh | bash -s -- --install vim" echo " curl -sLf https://spacevim.org/install.sh | bash -s -- --install vim"
echo " curl -sLf https://spacevim.org/install.sh | bash -s -- --install neovim" echo " curl -sLf https://spacevim.org/install.sh | bash -s -- --install neovim"
echo "" echo ""
echo " Uninstall SpaceVim" echo " Uninstall SpaceVim"
echo "" echo ""
echo " curl -sLf https://spacevim.org/install.sh | bash -s -- --uninstall" echo " curl -sLf https://spacevim.org/install.sh | bash -s -- --uninstall"
} }
# }}} # }}}
# install_done {{{ # install_done {{{
install_done () { install_done () {
echo_with_color ${Yellow} "" echo_with_color ${Yellow} ""
echo_with_color ${Yellow} "Almost done!" echo_with_color ${Yellow} "Almost done!"
echo_with_color ${Yellow} "==============================================================================" echo_with_color ${Yellow} "=============================================================================="
echo_with_color ${Yellow} "== Open Vim or Neovim and it will install the plugins automatically ==" echo_with_color ${Yellow} "== Open Vim or Neovim and it will install the plugins automatically =="
echo_with_color ${Yellow} "==============================================================================" echo_with_color ${Yellow} "=============================================================================="
echo_with_color ${Yellow} "" echo_with_color ${Yellow} ""
echo_with_color ${Yellow} "That's it. Thanks for installing SpaceVim. Enjoy!" echo_with_color ${Yellow} "That's it. Thanks for installing SpaceVim. Enjoy!"
echo_with_color ${Yellow} "" echo_with_color ${Yellow} ""
} }
# }}} # }}}
@ -321,132 +326,132 @@ install_done () {
welcome () { welcome () {
echo_with_color ${Yellow} " /###### /## /##/## " echo_with_color ${Yellow} " /###### /## /##/## "
echo_with_color ${Yellow} " /##__ ## | ## | #|__/ " echo_with_color ${Yellow} " /##__ ## | ## | #|__/ "
echo_with_color ${Yellow} " | ## \__/ /###### /###### /####### /######| ## | ##/##/######/#### " echo_with_color ${Yellow} " | ## \__/ /###### /###### /####### /######| ## | ##/##/######/#### "
echo_with_color ${Yellow} " | ###### /##__ ##|____ ##/##_____//##__ #| ## / ##| #| ##_ ##_ ##" echo_with_color ${Yellow} " | ###### /##__ ##|____ ##/##_____//##__ #| ## / ##| #| ##_ ##_ ##"
echo_with_color ${Yellow} " \____ #| ## \ ## /######| ## | ########\ ## ##/| #| ## \ ## \ ##" echo_with_color ${Yellow} " \____ #| ## \ ## /######| ## | ########\ ## ##/| #| ## \ ## \ ##"
echo_with_color ${Yellow} " /## \ #| ## | ##/##__ #| ## | ##_____/ \ ###/ | #| ## | ## | ##" echo_with_color ${Yellow} " /## \ #| ## | ##/##__ #| ## | ##_____/ \ ###/ | #| ## | ## | ##"
echo_with_color ${Yellow} " | ######| #######| ######| ######| ####### \ #/ | #| ## | ## | ##" echo_with_color ${Yellow} " | ######| #######| ######| ######| ####### \ #/ | #| ## | ## | ##"
echo_with_color ${Yellow} " \______/| ##____/ \_______/\_______/\_______/ \_/ |__|__/ |__/ |__/" echo_with_color ${Yellow} " \______/| ##____/ \_______/\_______/\_______/ \_/ |__|__/ |__/ |__/"
echo_with_color ${Yellow} " | ## " echo_with_color ${Yellow} " | ## "
echo_with_color ${Yellow} " | ## " echo_with_color ${Yellow} " | ## "
echo_with_color ${Yellow} " |__/ " echo_with_color ${Yellow} " |__/ "
echo_with_color ${Yellow} " version : ${Version} by : spacevim.org " echo_with_color ${Yellow} " version : ${Version} by : spacevim.org "
} }
# }}} # }}}
# download_font {{{ # download_font {{{
download_font () { download_font () {
url="https://raw.githubusercontent.com/wsdjeg/DotFiles/master/local/share/fonts/${1// /%20}" url="https://raw.githubusercontent.com/wsdjeg/DotFiles/master/local/share/fonts/${1// /%20}"
path="$HOME/.local/share/fonts/$1" path="$HOME/.local/share/fonts/$1"
# Clean up after https://github.com/SpaceVim/SpaceVim/issues/2532 # Clean up after https://github.com/SpaceVim/SpaceVim/issues/2532
if [[ -f "$path" && ! -s "$path" ]] if [[ -f "$path" && ! -s "$path" ]]
then then
rm "$path" rm "$path"
fi fi
if [[ -f "$path" ]] if [[ -f "$path" ]]
then then
success "Downloaded $1" success "Downloaded $1"
else else
info "Downloading $1" info "Downloading $1"
curl -s -o "$path" "$url" curl -s -o "$path" "$url"
success "Downloaded $1" success "Downloaded $1"
fi fi
} }
# }}} # }}}
# install_fonts {{{ # install_fonts {{{
install_fonts () { install_fonts () {
if [[ ! -d "$HOME/.local/share/fonts" ]]; then if [[ ! -d "$HOME/.local/share/fonts" ]]; then
mkdir -p $HOME/.local/share/fonts mkdir -p $HOME/.local/share/fonts
fi
download_font "DejaVu Sans Mono Bold Oblique for Powerline.ttf"
download_font "DejaVu Sans Mono Bold for Powerline.ttf"
download_font "DejaVu Sans Mono Oblique for Powerline.ttf"
download_font "DejaVu Sans Mono for Powerline.ttf"
download_font "DroidSansMonoForPowerlinePlusNerdFileTypesMono.otf"
download_font "Ubuntu Mono derivative Powerline Nerd Font Complete.ttf"
download_font "WEBDINGS.TTF"
download_font "WINGDNG2.ttf"
download_font "WINGDNG3.ttf"
download_font "devicons.ttf"
download_font "mtextra.ttf"
download_font "symbol.ttf"
download_font "wingding.ttf"
info "Updating font cache, please wait ..."
if [ $System == "Darwin" ];then
if [ ! -e "$HOME/Library/Fonts" ];then
mkdir "$HOME/Library/Fonts"
fi fi
cp $HOME/.local/share/fonts/* $HOME/Library/Fonts/ download_font "DejaVu Sans Mono Bold Oblique for Powerline.ttf"
else download_font "DejaVu Sans Mono Bold for Powerline.ttf"
fc-cache -fv > /dev/null download_font "DejaVu Sans Mono Oblique for Powerline.ttf"
mkfontdir "$HOME/.local/share/fonts" > /dev/null download_font "DejaVu Sans Mono for Powerline.ttf"
mkfontscale "$HOME/.local/share/fonts" > /dev/null download_font "DroidSansMonoForPowerlinePlusNerdFileTypesMono.otf"
fi download_font "Ubuntu Mono derivative Powerline Nerd Font Complete.ttf"
success "font cache done!" download_font "WEBDINGS.TTF"
download_font "WINGDNG2.ttf"
download_font "WINGDNG3.ttf"
download_font "devicons.ttf"
download_font "mtextra.ttf"
download_font "symbol.ttf"
download_font "wingding.ttf"
info "Updating font cache, please wait ..."
if [ $System == "Darwin" ];then
if [ ! -e "$HOME/Library/Fonts" ];then
mkdir "$HOME/Library/Fonts"
fi
cp $HOME/.local/share/fonts/* $HOME/Library/Fonts/
else
fc-cache -fv > /dev/null
mkfontdir "$HOME/.local/share/fonts" > /dev/null
mkfontscale "$HOME/.local/share/fonts" > /dev/null
fi
success "font cache done!"
} }
# }}} # }}}
### main {{{ ### main {{{
main () { main () {
if [ $# -gt 0 ] if [ $# -gt 0 ]
then then
case $1 in case $1 in
--uninstall|-u) --uninstall|-u)
info "Trying to uninstall SpaceVim" info "Trying to uninstall SpaceVim"
uninstall_vim uninstall_vim
uninstall_neovim uninstall_neovim
echo_with_color ${BWhite} "Thanks!" echo_with_color ${BWhite} "Thanks!"
exit 0 exit 0
;; ;;
--checkRequirements|-c) --checkRequirements|-c)
check_requirements check_requirements
exit 0 exit 0
;; ;;
--install|-i) --install|-i)
welcome
need_cmd 'git'
fetch_repo
if [ $# -eq 2 ]
then
case $2 in
neovim)
install_neovim
install_done
exit 0
;;
vim)
install_vim
install_done
exit 0
esac
fi
install_vim
install_neovim
install_done
exit 0
;;
--help|-h)
usage
exit 0
;;
--version|-v)
msg "${Version}"
exit 0
esac
else
welcome welcome
need_cmd 'git' need_cmd 'git'
fetch_repo fetch_repo
if [ $# -eq 2 ]
then
case $2 in
neovim)
install_neovim
install_done
exit 0
;;
vim)
install_vim
install_done
exit 0
esac
fi
install_vim install_vim
install_neovim install_neovim
install_package_manager
install_fonts
install_done install_done
exit 0 fi
;;
--help|-h)
usage
exit 0
;;
--version|-v)
msg "${Version}"
exit 0
esac
else
welcome
need_cmd 'git'
fetch_repo
install_vim
install_neovim
install_package_manager
install_fonts
install_done
fi
} }
# }}} # }}}