From 9eb02251c45d2b0d312b2c40f65f2f926bfb9a34 Mon Sep 17 00:00:00 2001 From: danix Date: Mon, 3 Apr 2023 18:42:43 +0200 Subject: [PATCH] working on the backup and backup restore functionalities. --- SOURCE/CORE/core-backup.sh | 44 +++++++++++++++++++++ SOURCE/CORE/helpers.sh | 25 ++++++------ SOURCE/head.sh | 1 + SOURCE/main.sh | 13 +++++++ notes.sh | 80 ++++++++++++++++++++++++++++++++------ 5 files changed, 140 insertions(+), 23 deletions(-) create mode 100644 SOURCE/CORE/core-backup.sh diff --git a/SOURCE/CORE/core-backup.sh b/SOURCE/CORE/core-backup.sh new file mode 100644 index 0000000..38569ab --- /dev/null +++ b/SOURCE/CORE/core-backup.sh @@ -0,0 +1,44 @@ +function backup_data() { + BACKUPDIR="$1" + echo "backing up data in $BACKUPDIR" + + + if [ -d $BACKUPDIR ]; then + if [ $(/bin/ls -A $BACKUPDIR) ]; then + echo "$BACKUPDIR is not empty. Cannot continue" + exit + else + echo "$BACKUPDIR is ok. Continuing!" + fi + else + # BACKUPDIR doesn't exists + echo "$BACKUPDIR doesn't exists" + read -r -p "Do you want me to create it for you? (y/N) " ANSWER + case $ANSWER in + y|Y ) + mkdir -p $BACKUPDIR + ;; + * ) + echo "No changes made. Exiting" + exit + ;; + esac + fi + # ok, we have a backup directory + if [ -r $RCFILE ]; then + BCKUP_COMM=$(rsync -avz --progress ${RCFILE} ${BASEDIR}/* ${BACKUPDIR}) + else + BCKUP_COMM=$(rsync -avz --progress ${BASEDIR}/* ${BACKUPDIR}) + fi + # run the command + if [ "$BCKUP_COMM" ]; then + echo -e "BASE directory:\t\t$BASEDIR" + echo -e "BACKUP directory:\t$BACKUPDIR" + echo; echo "BACKUP COMPLETED" + fi +} + +function backup_restore() { + echo "restoring backup" +} + diff --git a/SOURCE/CORE/helpers.sh b/SOURCE/CORE/helpers.sh index a8f0981..8ff0e3c 100644 --- a/SOURCE/CORE/helpers.sh +++ b/SOURCE/CORE/helpers.sh @@ -27,20 +27,23 @@ debug file: /tmp/debug_bash-note.log text editor: ${EDITOR} terminal: ${TERMINAL} jq executable: ${JQ} +PAGER: ${PAGER} __NOWCONF__ echo "" echo "${BASENAME} parameters are:" - echo " -h | --help : This help text" - echo " -p | --plain : Output is in plain text" - echo " (without this option the output is formatted)" - echo " (this option must precede all others)" - echo " -l | --list : List existing notes" - echo " -a | --add [\"\"] : Add new note" - echo " -e | --edit [<note>] : Edit note" - echo " -d | --delete [<note> | all] : Delete single note or all notes at once" - echo " -s | --show [<note>] : Display note using your favourite PAGER" - echo " -v | --version : Print version" - echo " --userconf : Export User config file" + echo -e " -h | --help\t\t\t: This help text" + echo -e " -p | --plain\t\t\t: Output is in plain text" + echo -e "\t\t\t\t (without this option the output is formatted)" + echo -e "\t\t\t\t (this option must precede all others)" + echo -e " -l | --list\t\t\t: List existing notes" + echo -e " -a | --add [\"<title>\"]\t: Add new note" + echo -e " -e | --edit [<note>]\t\t: Edit note" + echo -e " -d | --delete [<note> | all] : Delete single note or all notes at once" + echo -e " -s | --show [<note>]\t\t: Display note using your favourite PAGER" + echo -e " -v | --version\t\t: Print version" + echo -e " --userconf\t\t\t: Export User config file" + echo -e " --backup [<dest>]\t\t: Backup your data in your destination folder" echo "" } + diff --git a/SOURCE/head.sh b/SOURCE/head.sh index d68d171..6278aa1 100644 --- a/SOURCE/head.sh +++ b/SOURCE/head.sh @@ -118,6 +118,7 @@ terminal: ${TERMINAL} jq executable: ${JQ} " + echo "Now I'll create the needed files and directories." read -r -p "Do you wish to continue? (y/N) " ANSWER case $ANSWER in y|Y ) diff --git a/SOURCE/main.sh b/SOURCE/main.sh index 94f696d..612200d 100644 --- a/SOURCE/main.sh +++ b/SOURCE/main.sh @@ -85,6 +85,19 @@ while true; do # shellcheck disable=SC2317 exit ;; + --backup ) + case "$2" in + '' ) + read -r -p "Backup Dir: " BDIR + ;; + * ) + BDIR=$2 + ;; + esac + shift 2 + backup_data $BDIR + exit + ;; -- ) shift break diff --git a/notes.sh b/notes.sh index b298cff..66942d3 100755 --- a/notes.sh +++ b/notes.sh @@ -118,6 +118,7 @@ terminal: ${TERMINAL} jq executable: ${JQ} " + echo "Now I'll create the needed files and directories." read -r -p "Do you wish to continue? (y/N) " ANSWER case $ANSWER in y|Y ) @@ -174,23 +175,26 @@ debug file: /tmp/debug_bash-note.log text editor: ${EDITOR} terminal: ${TERMINAL} jq executable: ${JQ} +PAGER: ${PAGER} __NOWCONF__ echo "" echo "${BASENAME} parameters are:" - echo " -h | --help : This help text" - echo " -p | --plain : Output is in plain text" - echo " (without this option the output is formatted)" - echo " (this option must precede all others)" - echo " -l | --list : List existing notes" - echo " -a | --add [\"<title>\"] : Add new note" - echo " -e | --edit [<note>] : Edit note" - echo " -d | --delete [<note> | all] : Delete single note or all notes at once" - echo " -s | --show [<note>] : Display note using your favourite PAGER" - echo " -v | --version : Print version" - echo " --userconf : Export User config file" + echo -e " -h | --help\t\t\t: This help text" + echo -e " -p | --plain\t\t\t: Output is in plain text" + echo -e "\t\t\t\t (without this option the output is formatted)" + echo -e "\t\t\t\t (this option must precede all others)" + echo -e " -l | --list\t\t\t: List existing notes" + echo -e " -a | --add [\"<title>\"]\t: Add new note" + echo -e " -e | --edit [<note>]\t\t: Edit note" + echo -e " -d | --delete [<note> | all] : Delete single note or all notes at once" + echo -e " -s | --show [<note>]\t\t: Display note using your favourite PAGER" + echo -e " -v | --version\t\t: Print version" + echo -e " --userconf\t\t\t: Export User config file" + echo -e " --backup [<dest>]\t\t: Backup your data in your destination folder" echo "" } + function addnote() { # remove eventually existing temp DB file if [[ -f $TMPDB ]]; then @@ -214,6 +218,46 @@ function addnote() { # shellcheck disable=SC2086,SC2091 $(${TERMINAL} ${TERM_OPTS} ${EDITOR} ${NOTESDIR}/${NOW}) } +function backup_data() { + BACKUPDIR="$1" + echo "backing up data in $BACKUPDIR" + + + if [ -d $BACKUPDIR ]; then + if [ $(/bin/ls -A $BACKUPDIR) ]; then + echo "$BACKUPDIR is not empty. Cannot continue" + exit + else + echo "$BACKUPDIR is ok. Continuing!" + fi + else + # BACKUPDIR doesn't exists + echo "$BACKUPDIR doesn't exists" + read -r -p "Do you want me to create it for you? (y/N) " ANSWER + case $ANSWER in + y|Y ) + mkdir -p $BACKUPDIR + ;; + * ) + echo "No changes made. Exiting" + exit + ;; + esac + fi + # ok, we have a backup directory + if [ -r $RCFILE ]; then + BCKUP_COMM=$(rsync -avz --progress ${RCFILE} ${BASEDIR}/* ${BACKUPDIR}) + else + BCKUP_COMM=$(rsync -avz --progress ${BASEDIR}/* ${BACKUPDIR}) + fi + # run the command + if [ "$BCKUP_COMM" ]; then + echo -e "BASE directory:\t\t$BASEDIR" + echo -e "BACKUP directory:\t$BACKUPDIR" + echo; echo "BACKUP COMPLETED" + fi +} + function editnote() { NOTE=$1 # shellcheck disable=SC2155 @@ -236,7 +280,6 @@ function editnote() { echo "note not found" exit 1 fi - exit } function listnotes() { # [ $PLAIN == true ] && echo "output is plain text" || echo "output is colored" @@ -415,6 +458,19 @@ while true; do # shellcheck disable=SC2317 exit ;; + --backup ) + case "$2" in + '' ) + read -r -p "Backup Dir: " BDIR + ;; + * ) + BDIR=$2 + ;; + esac + shift 2 + backup_data $BDIR + exit + ;; -- ) shift break -- 2.20.1