| @@ -0,0 +1,92 @@ | |||
| #!/bin/sh | |||
| BACKUPS_PATH=$HOME/Backups | |||
| gitcmd() { | |||
| #First arg should be the name of the subdirectory, second arg should be command | |||
| check_args $# 2 | |||
| if [ ! -d "$BACKUPS_PATH/$1" ]; then | |||
| invalid_path_msg "$1" | |||
| return 1; | |||
| fi | |||
| git -C $BACKUPS_PATH/$1 $2 | |||
| printf "The command succeded\n" | |||
| } | |||
| git_clone_backup() { | |||
| check_args $# 2 | |||
| git -C $BACKUPS_PATH clone $1:Backups/$2 | |||
| } | |||
| git_clone_proj() { | |||
| check_args $# 2 | |||
| git -C $HOME/Projects clone ssh://$1/~/Projects/$2 | |||
| } | |||
| bdiff() { | |||
| check_args $# 2 | |||
| if [ ! -d "$BACKUPS_PATH/$1" ]; then | |||
| invalid_path_msg "$1" | |||
| return 1; | |||
| fi | |||
| case "$1" in | |||
| configs) vimdiff "$BACKUPS_PATH/$1/$2" "$XDG_CONFIG_HOME/$2";; | |||
| macros) vimdiff "$BACKUPS_PATH/$1/$2" "$HOME/Macros/$2";; | |||
| global_vim) vimdiff "$BACKUPS_PATH/$1/$2" "/usr/share/vim/$2";; | |||
| *) invalid_path_msg "$1"; return 1;; | |||
| esac | |||
| } | |||
| overwrite_local() { | |||
| if [ ! -e $BACKUPS_PATH/$1/$2 ]; then | |||
| printf "The backup path $BACKUPS_PATH/$1/$2 does not exist\n" | |||
| return 1; | |||
| fi | |||
| case "$1" in | |||
| configs) cp -r "$BACKUPS_PATH/$1/$2" "$XDG_CONFIG_HOME/";; | |||
| macros) cp -r "$BACKUPS_PATH/$1/$2" "$HOME/Macros/";; | |||
| *) invalid_path_msg "$1"; return 1;; | |||
| esac | |||
| printf "local overwrite successful\n" | |||
| } | |||
| overwrite_backup() { | |||
| if [ git diff --stat $BACKUPS_PATH/$1 ]; then | |||
| printf "There are uncommited changes in $1\n" | |||
| return 1 | |||
| fi | |||
| case "$1" in | |||
| config) cp -r "$XDG_CONFIG_HOME/$2" "$BACKUPS_PATH/$1/$2";; | |||
| macros) cp -r "$HOME/Macros/$2" "$BACKUPS_PATH/$1/$2";; | |||
| *) invalid_path_msg "$1"; return 1;; | |||
| esac | |||
| printf "backup overwrite successful\n" | |||
| } | |||
| invalid_path_msg() { | |||
| printf "That path is invalid. $@\n" | |||
| } | |||
| check_args() { | |||
| if [ $1 -ne $2 ]; then | |||
| printf "Invalid number of arguments. Expected $2\n" | |||
| exit; | |||
| fi | |||
| return 0; | |||
| } | |||
| case "$1" in | |||
| pull-backup) | |||
| case "$2" in | |||
| configs) pull_backup configs;; | |||
| macros) pull_backup macros;; | |||
| esac | |||
| ;; | |||
| overwrite-local) overwrite_local $2 $3;; | |||
| overwrite-backup) overwrite_backup $2 $3;; | |||
| gitcmd) gitcmd "$2" "$3";; | |||
| push-backup) overwrite_backup $2 $3;; | |||
| bclone) git_clone_backup "$2" "$3";; | |||
| pclone) git_clone_proj "$2" "$3";; | |||
| bdiff) bdiff $2 "$3";; | |||
| *) printf "No such option\n";; | |||
| esac | |||