Instead of using submodules, I'm having the setup script clone each bundle into its own directory in vim/bundle. The dotfiles repo has a .gitignore file in that directory which will ensure the directory exists, but nothing in it is tracked.
83 lines
2.2 KiB
Bash
Executable file
83 lines
2.2 KiB
Bash
Executable file
#!/bin/zsh
|
|
|
|
dfdir=$(cd "$(dirname "$0")" && pwd)
|
|
sys=`uname -s | tr A-Z a-z`
|
|
|
|
# Vim bundles
|
|
typeset -A vimbundles
|
|
vimbundles=( \
|
|
blackboard "https://github.com/nelstrom/vim-blackboard.git" \
|
|
command-t "https://github.com/wincent/Command-T.git" \
|
|
fugitive "https://github.com/tpope/vim-fugitive.git" \
|
|
gundo "https://github.com/sjl/gundo.vim.git" \
|
|
repeat "https://github.com/tpope/vim-repeat" \
|
|
snipmate "https://github.com/msanders/snipmate.vim.git" \
|
|
solarized "https://github.com/altercation/vim-colors-solarized.git" \
|
|
speeddating "https://github.com/tpope/vim-speeddating.git" \
|
|
surround "https://github.com/tpope/vim-surround.git" \
|
|
unimpaired "https://github.com/tpope/vim-unimpaired.git" \
|
|
)
|
|
|
|
print -P "%BSymlinking config files%b"
|
|
for dotfile in `ls $dfdir`
|
|
do
|
|
# metafiles; don't link them
|
|
[ $dotfile = 'setup.sh' ] && continue
|
|
[ $dotfile = 'README.md' ] && continue
|
|
|
|
local dest="$HOME/.$dotfile"
|
|
local action='skipped'
|
|
|
|
if [[ ! -L "$dest" ]]; then
|
|
action='linked'
|
|
else
|
|
action='skipped'
|
|
fi
|
|
filler=$(($COLUMNS - ${#dest} - ${#action} - 4))
|
|
spaces=''
|
|
for (( i=0; $i < $filler; i++ )); do spaces="$spaces "; done
|
|
|
|
echo -n " $dest$spaces"
|
|
if [[ $action = 'linked' ]]; then
|
|
ln -fs "$dfdir/$dotfile" "$dest"
|
|
action="%F{yellow}$action%f"
|
|
else
|
|
action="%F{green}$action%f"
|
|
fi
|
|
print -P $action
|
|
done
|
|
|
|
echo "touch $HOME/.hushlogin"
|
|
touch "$HOME/.hushlogin"
|
|
|
|
# Initialize submodules
|
|
print -P "%BFetching Vim modules%b"
|
|
cd "$dfdir/vim/bundle"
|
|
for module in ${(k)vimbundles}; do
|
|
echo -n " $module"
|
|
|
|
if [ -d $module ]; then
|
|
result='skipped'
|
|
else
|
|
git clone ${vimbundles[$module]} $module 1>/dev/null 2>&1
|
|
if [[ $? -eq 0 ]]; then
|
|
result='done'
|
|
else
|
|
result='failed'
|
|
fi
|
|
fi
|
|
|
|
spaces=''
|
|
filler=$(($COLUMNS - ${#module} - ${#result} - 4))
|
|
for (( i=0; $i < $filler; i++ )); do spaces="$spaces "; done
|
|
if [[ $result == 'skipped' ]]; then
|
|
color='yellow'
|
|
elif [[ $result == 'failed' ]]; then
|
|
color='red'
|
|
elif [[ $result == 'done' ]]; then
|
|
color='green'
|
|
fi
|
|
print -P "$spaces%F{$color}$result%f"
|
|
done
|
|
|
|
exit 0
|