#!/usr/bin/env bash # package_dirs records directories of all installed packages. It is used # to help clean unused packages. package_dirs=() update_package () { name=$1 remote_url=$2 load_type='start' [ $# -ge 3 ] && load_type=$3 package_dir="$HOME/.vim/pack/vendor/$load_type/$name" package_dirs+=($package_dir) if [ ! -d $package_dir ]; then echo "$name : Installing ... " mkdir -p $package_dir cd $package_dir git clone --depth 1 $remote_url $package_dir && echo "$name : Done" || echo "$name : FAIL" else cd $package_dir echo "$name : Updating ... " git pull && echo "$name : Done" || echo "$name : FAIL" fi git submodule update --init --recursive --depth 1 if [ $# -ge 4 ]; then $4 fi } clean () { for load_type in 'opt' 'start'; do for package_name in $(ls $HOME/.vim/pack/vendor/$load_type); do package_dir=$HOME/.vim/pack/vendor/$load_type/$package_name if [[ ! " ${package_dirs[*]} " =~ " ${package_dir} " ]]; then read -r -p "rm -rf $package_dir? [y/N]: " response response=${response,,} if [[ "$response" =~ ^(yes|y)$ ]]; then rm -rf $package_dir fi fi done done } install_ycm () { opts=' --clangd-completer' if [ -f /usr/bin/go -o -f /usr/local/bin/go ]; then opts="$opts --go-completer" fi python3 ./install.py $opts } update_package 'YouCompleteMe' 'git@github.com:ycm-core/YouCompleteMe.git' 'start' 'install_ycm' update_package "nnn.vim" "git@github.com:mcchrish/nnn.vim.git" update_package 'vim-fugitive' 'git@github.com:tpope/vim-fugitive.git' update_package 'fzf' 'git@github.com:junegunn/fzf.git' update_package 'fzf.vim' 'git@github.com:junegunn/fzf.vim.git' update_package 'ultisnips' 'git@github.com:SirVer/ultisnips.git' update_package 'vim-snippets' 'git@github.com:honza/vim-snippets.git' update_package 'onedark.vim' 'git@github.com:joshdick/onedark.vim.git' 'opt' update_package vim-lsp git@github.com:prabirshrestha/vim-lsp.git update_package undotree git@github.com:mbbill/undotree.git update_package ale git@github.com:dense-analysis/ale.git update_package vim-eunuch git@github.com:tpope/vim-eunuch.git update_package vim-sleuth git@github.com:tpope/vim-sleuth.git update_package tabular git@github.com:godlygeek/tabular.git update_package vim-rooter git@github.com:airblade/vim-rooter.git update_package vim-gutentags git@github.com:ludovicchabant/vim-gutentags.git update_package vim-airline git@github.com:vim-airline/vim-airline.git update_package vim-airline-themes git@github.com:vim-airline/vim-airline-themes.git update_package vim-easymotion git@github.com:easymotion/vim-easymotion.git update_package editorconfig-vim git@github.com:editorconfig/editorconfig-vim.git update_package vim-godot git@github.com:habamax/vim-godot.git update_package vim-ledger git@github.com:ledger/vim-ledger.git update_package vim-signify git@github.com:mhinz/vim-signify.git update_package vim-unimpaired git@github.com:tpope/vim-unimpaired.git clean