From 91929bedd31918e0ebd91a3825b8adc6c862dab0 Mon Sep 17 00:00:00 2001 From: = <=> Date: Wed, 23 Sep 2020 20:18:58 -0400 Subject: [PATCH] Add util script to master --- util | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/util b/util index e69de29..7b5d13c 100755 --- a/util +++ b/util @@ -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