sync/scripts/sync.sh

128 lines
4.0 KiB
Bash
Raw Normal View History

2017-11-27 11:45:01 -05:00
#!/bin/bash
ABSPATH="$(\pushd >/dev/null "$(\dirname "$0")/..";\pwd;\popd >/dev/null)"
SYNC_CONFIG=0
SHOW_HELP=0
SYNC_CUSTOM=0
SYNC_VIM=0
VALID_CMD=0
RECLONE=0
TMP_PATH="/tmp/$(uuidgen)"
mkdir -p "$TMP_PATH"
sync_config() {
# Remove old config files
remove ~/.gitconfig ~/.bashrc ~/.pylintrc ~/.zsh ~/.zshrc ~/.tmux.conf ~/.config/liquidpromptrc ~/.config/dunstrc
# Silently remove vimperator files since we are not reinstalling
remove -s ~/.vimperatorrc ~/.vimperator/colors/vimPgray.vimp
if [[ $RECLONE = 1 ]]; then
remove ~/.fzf ~/.zsh-git
2016-07-26 23:06:22 -04:00
fi
2017-11-27 11:45:01 -05:00
# Install on all systems
# Vimperator has perished. Don't install vimperator files anymore
#ln -s "$ABSPATH/vimperator/vimperatorrc" ~/.vimperatorrc
#mkdir -p ~/.vimperator/colors
#ln -s "$ABSPATH/vimperator/vimPgray.vimp" ~/.vimperator/colors/vimPgray.vimp
if command -v git 2>&1 >/dev/null; then
if command -v zsh 2>&1 >/dev/null; then
for i in lpr oh-my-git-themes omg zsh-syntax-highlighting; do
if [ ! -d ~/.zsh-git/"$i" ]; then
git clone "https://austenwares.com/gitea/stonewareslord/$i.git" ~/.zsh-git/"$i"
fi
done
fi
2017-11-27 11:45:01 -05:00
if [ ! -d ~/.fzf ] ; then
git clone "https://austenwares.com/gitea/stonewareslord/fzf.git" ~/.fzf
~/.fzf/install --bin
fi
2017-11-27 11:45:01 -05:00
else
echo "No git! Not installing fzf or zsh packages"
fi
mkdir -p ~/.config
ln -s "$ABSPATH/dunst/dunstrc" ~/.config/dunstrc
ln -s "$ABSPATH/tmux/tmux.conf" ~/.tmux.conf
ln -s "$ABSPATH/python/pylintrc" ~/.pylintrc
ln -s "$ABSPATH/git/gitconfig" ~/.gitconfig
ln -s "$ABSPATH/shells/bashrc" ~/.bashrc
ln -s "$ABSPATH/shells/zshrc" ~/.zshrc
ln -s "$ABSPATH/zsh" ~/.zsh
ln -s "$ABSPATH/shells/liquidpromptrc" ~/.config/liquidpromptrc
if [ "$(uname)" != "Darwin" ]; then
# Don't install these on Mac
remove ~/.i3/{config,i3status.conf,run.sh} ~/.Xmodmap ~/.xsession ~/.config/synapse/gtkrc ~/.Xresources
mkdir -p ~/.i3 ~/.config/synapse
ln -s "$ABSPATH/i3/config" ~/.i3/config
ln -s "$ABSPATH/i3/$(hostname)-status.conf" ~/.i3/i3status.conf 2>/dev/null
ln -s "$ABSPATH/i3/run.sh" ~/.i3/run.sh
ln -s "$ABSPATH/i3/Xmodmap" ~/.Xmodmap
ln -s "$ABSPATH/i3/xsession" ~/.xsession
ln -s "$ABSPATH/i3/gtkrc" ~/.config/synapse/gtkrc
ln -s "$ABSPATH/shells/Xresources" ~/.Xresources
if command -v xrdb 2>&1 >/dev/null; then
xrdb ~/.Xresources
fi
fi
2017-11-27 11:45:01 -05:00
}
sync_custom() {
if ! command -v git 2>&1 >/dev/null; then
echo "Error! No git -- can't sync custom files"
exit
fi
if [[ ! -d ~/.zsh-git/custom-config ]]; then
#TODO: Figure out if I should use ssh or https cloning
#git clone https://austenwares.com/gitea/stonewareslord/custom-config
git clone git@austenwares.com:stonewareslord/custom-config ~/.zsh-git/custom-config
fi
remove ~/.gitconfig
ln -s ~/.zsh-git/custom-config/gitconfig ~/.gitconfig
# Custom zsh is sourced from zshrc
}
sync_vim() {
remove ~/.vimrc
ln -s "$ABSPATH/vim/vimrc" ~/.vimrc
vim +"silent! call Initialize()" +q
}
show_help() {
echo "sync.sh syncs configuration files and Vim plugins on computers"
echo " -h Shows this help"
echo " -b Syncs Vim bundles"
echo " -s Use this if you want custom stonewareslord settings"
echo " -c Sync configuration files"
echo " -r Reclone all git repositories"
exit
}
remove() {
local SILENT=0
if [[ "$1" = "-s" ]]; then
# Be quiet!
SILENT=1
2017-11-28 00:34:11 -05:00
shift
2017-11-27 11:45:01 -05:00
fi
if [[ $SILENT = 1 ]]; then
\mv -t "$TMP_PATH" $* 2>/dev/null
else
\mv -t "$TMP_PATH" $*
fi
}
while getopts ":shbc" OPT "$@"; do
case $OPT in
b) SYNC_VIM=1;VALID_CMD=1;;
s) SYNC_CUSTOM=1;;
c) SYNC_CONFIG=1;VALID_CMD=1;;
r) RECLONE=1;;
*) SHOW_HELP=1;;
esac
done
2017-11-27 11:45:01 -05:00
if [[ $SHOW_HELP = 1 ]] || [[ ! $VALID_CMD = 1 ]]; then
show_help
fi
echo "Syncing config files. Placing old files in $TMP_PATH"
if [[ $SYNC_CONFIG = 1 ]]; then
sync_config
if [[ $SYNC_CUSTOM = 1 ]]; then
sync_custom
fi
fi
if [[ $SYNC_VIM = 1 ]]; then
sync_vim
fi
echo "Done syncing"