From 1690d1ef938c78b4e03c99c96181307a8ba269bb Mon Sep 17 00:00:00 2001 From: = <=> Date: Fri, 17 Jul 2020 18:28:24 -0400 Subject: [PATCH] Create utility functions for managing backups --- .gitignore | 1 + util | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 .gitignore create mode 100755 util diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1377554 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.swp diff --git a/util b/util new file mode 100755 index 0000000..9aedff3 --- /dev/null +++ b/util @@ -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