aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/vim-pack78
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