|
|
@@ -0,0 +1,72 @@ |
|
|
|
#!/bin/sh |
|
|
|
|
|
|
|
pull_backup() { |
|
|
|
check_args $# 2 |
|
|
|
if [ ! -d "$BACKUPS_PATH/$2" ]; then |
|
|
|
invalid_path_msg "$1:$2" |
|
|
|
return 1; |
|
|
|
fi |
|
|
|
|
|
|
|
git -C $BACKUPS_PATH/$2 pull $1 |
|
|
|
} |
|
|
|
|
|
|
|
push_backup() { |
|
|
|
check_args $# 2 |
|
|
|
if [ ! -d "$BACKUPS_PATH/$2" ]; then |
|
|
|
invalid_path_msg "$1:$2" |
|
|
|
return 1; |
|
|
|
fi |
|
|
|
|
|
|
|
git -C $BACKUPS_PATH/$2 push $1 |
|
|
|
} |
|
|
|
|
|
|
|
overwrite_local() { |
|
|
|
if [ ! -e "$BACKUPS_PATH/$1/$2" ]; then |
|
|
|
printf "The backup path does not exist\n" |
|
|
|
return 1; |
|
|
|
fi |
|
|
|
case "$1" in |
|
|
|
configs) cp -r "$BACKUPS_PATH/$1/$2" "$XDG_CONFIG_HOME/$2";; |
|
|
|
macros) cp -r "$BACKUPS_PATH/$1/$2" "$HOME/Macros/$2";; |
|
|
|
*) invalid_path_msg "$1"; return 1;; |
|
|
|
esac |
|
|
|
} |
|
|
|
|
|
|
|
overwrite_backup() { |
|
|
|
if [ git diff --stat $BACKUPS_PATH/$1 ]; then |
|
|
|
printf "There are uncommited changes in $1\n" |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
case "$1" in |
|
|
|
configs) 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 |
|
|
|
} |
|
|
|
|
|
|
|
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;; |
|
|
|
pull-backup) pull_backup $2 $3;; |
|
|
|
push-backup) push_backup $2 $3;; |
|
|
|
push-backup) overwrite_backup $2 $3;; |
|
|
|
*) printf "No such option\n";; |
|
|
|
esac |