diff options
author | Guangxiong Lin <[email protected]> | 2021-12-15 21:09:50 +0800 |
---|---|---|
committer | Guangxiong Lin <[email protected]> | 2021-12-15 21:09:50 +0800 |
commit | 3a1e638cd8f91b87ceae26599abef3af71d28a42 (patch) | |
tree | ae4303ec6c2582027f7d2011064273461a45013a | |
parent | 16de7dd91e094e2ff8bb0fe5add9c5074c6bde94 (diff) | |
download | dotfiles-3a1e638cd8f91b87ceae26599abef3af71d28a42.tar.gz dotfiles-3a1e638cd8f91b87ceae26599abef3af71d28a42.tar.bz2 dotfiles-3a1e638cd8f91b87ceae26599abef3af71d28a42.zip |
Update vim package update script
-rwxr-xr-x | bin/vim-pack | 78 |
1 files changed, 50 insertions, 28 deletions
diff --git a/bin/vim-pack b/bin/vim-pack index 472a9e1..922b45f 100755 --- a/bin/vim-pack +++ b/bin/vim-pack @@ -2,6 +2,9 @@ # package_dirs records directories of all installed packages. It is used # to help clean unused packages. +package_dirs_file=/tmp/my-vim-package-dirs +[ -f $package_dirs_file ] && rm $package_dirs_file + package_dirs=() update_package () { @@ -12,26 +15,42 @@ update_package () { [ $# -ge 3 ] && load_type=$3 package_dir="$HOME/.vim/pack/vendor/$load_type/$name" - package_dirs+=($package_dir) + echo "$package_dir" >> $package_dirs_file 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 + fi + + cd $package_dir + git fetch origin > /dev/null + + UPSTREAM='@{u}' + LOCAL=$(git rev-parse @) + REMOTE=$(git rev-parse "$UPSTREAM") + BASE=$(git merge-base @ "$UPSTREAM") + UPDATED=0 + + if [ $LOCAL != $REMOTE -a $LOCAL = $BASE ]; then echo "$name : Updating ... " git pull && echo "$name : Done" || echo "$name : FAIL" + UPDATED=1 + else + echo "$name : Up to date" fi git submodule update --init --recursive --depth 1 - if [ $# -ge 4 ]; then + if [ $UPDATED -eq 1 -a $# -ge 4 ]; then $4 fi } clean () { + while IFS= read -r line; do + package_dirs+=("$line") + done < $package_dirs_file + 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 @@ -56,28 +75,31 @@ install_ycm () { python3 ./install.py $opts } -update_package 'YouCompleteMe' '[email protected]:ycm-core/YouCompleteMe.git' 'start' 'install_ycm' -update_package "nnn.vim" "[email protected]:mcchrish/nnn.vim.git" -update_package 'vim-fugitive' '[email protected]:tpope/vim-fugitive.git' -update_package 'fzf' '[email protected]:junegunn/fzf.git' -update_package 'fzf.vim' '[email protected]:junegunn/fzf.vim.git' -update_package 'ultisnips' '[email protected]:SirVer/ultisnips.git' -update_package 'vim-snippets' '[email protected]:honza/vim-snippets.git' -update_package 'onedark.vim' '[email protected]:joshdick/onedark.vim.git' 'opt' -update_package undotree [email protected]:mbbill/undotree.git -update_package ale [email protected]:dense-analysis/ale.git -update_package vim-eunuch [email protected]:tpope/vim-eunuch.git -update_package vim-sleuth [email protected]:tpope/vim-sleuth.git -update_package tabular [email protected]:godlygeek/tabular.git -update_package vim-rooter [email protected]:airblade/vim-rooter.git -update_package vim-gutentags [email protected]:ludovicchabant/vim-gutentags.git -update_package vim-airline [email protected]:vim-airline/vim-airline.git -update_package vim-airline-themes [email protected]:vim-airline/vim-airline-themes.git -update_package vim-easymotion [email protected]:easymotion/vim-easymotion.git -update_package editorconfig-vim [email protected]:editorconfig/editorconfig-vim.git -update_package vim-godot [email protected]:habamax/vim-godot.git -update_package vim-ledger [email protected]:ledger/vim-ledger.git -update_package vim-signify [email protected]:mhinz/vim-signify.git -update_package vim-unimpaired [email protected]:tpope/vim-unimpaired.git +update_package 'YouCompleteMe' '[email protected]:ycm-core/YouCompleteMe.git' 'start' 'install_ycm' & +update_package "nnn.vim" "[email protected]:mcchrish/nnn.vim.git" & +update_package 'vim-fugitive' '[email protected]:tpope/vim-fugitive.git' & +update_package 'fzf' '[email protected]:junegunn/fzf.git' & +update_package 'fzf.vim' '[email protected]:junegunn/fzf.vim.git' & +update_package 'ultisnips' '[email protected]:SirVer/ultisnips.git' & +update_package 'vim-snippets' '[email protected]:honza/vim-snippets.git' & +update_package 'onedark.vim' '[email protected]:joshdick/onedark.vim.git' 'opt' & +update_package undotree [email protected]:mbbill/undotree.git & +update_package ale [email protected]:dense-analysis/ale.git & +update_package vim-eunuch [email protected]:tpope/vim-eunuch.git & +update_package vim-sleuth [email protected]:tpope/vim-sleuth.git & +update_package tabular [email protected]:godlygeek/tabular.git & +update_package vim-rooter [email protected]:airblade/vim-rooter.git & +update_package vim-gutentags [email protected]:ludovicchabant/vim-gutentags.git & +update_package vim-airline [email protected]:vim-airline/vim-airline.git & +update_package vim-airline-themes [email protected]:vim-airline/vim-airline-themes.git & +update_package vim-easymotion [email protected]:easymotion/vim-easymotion.git & +update_package editorconfig-vim [email protected]:editorconfig/editorconfig-vim.git & +update_package vim-godot [email protected]:habamax/vim-godot.git & +update_package vim-ledger [email protected]:ledger/vim-ledger.git & +update_package vim-signify [email protected]:mhinz/vim-signify.git & +update_package vim-unimpaired [email protected]:tpope/vim-unimpaired.git & + +wait +vim '"+helptags ALL"' +q clean |