improved the help text
authordanix <danix@danix.xyz>
Fri, 24 Mar 2023 14:12:10 +0000 (15:12 +0100)
committerdanix <danix@danix.xyz>
Fri, 24 Mar 2023 14:12:10 +0000 (15:12 +0100)
notes.sh

index 84e06b7..3fc89e3 100644 (file)
--- a/notes.sh
+++ b/notes.sh
@@ -5,17 +5,28 @@
 PID=$$
 VERSION="0.1"
 
+set_defaults() {
+# Binaries to use
 EDITOR=${EDITOR:-/usr/bin/vim}
 TERMINAL=${TERMINAL:-/usr/bin/alacritty}
-JQ=$(which jq)
+JQ=${JQ:-/usr/bin/jq}
 
+# base directory for program files
 BASEDIR=${BASEDIR:-~/.local/share/bash-notes}
-RCFILE=${RCFILE:-~/.bash-notes.rc}
+# notes database in json format
 DB=${BASEDIR}/db.json
+# directory containing the actual notes
 NOTESDIR=${BASEDIR}/notes
 
+} # end set_defaults, do not change this line.
+
+set_defaults
+
+# Do not edit below this point
+RCFILE=${RCFILE:-~/.config/bash-notes.rc}
 TMPDB=/tmp/db.json
 BASENAME=$( basename $0 )
+NOW=$(date +%s)
 
 if [ ! -x $JQ ]; then
        echo "jq not found in your PATH"
@@ -46,22 +57,36 @@ fi
 echo $PID > $PIDFILE
 
 function helptext() {
-    echo "Parameters are:"
-    echo "  -h                 : This help text"
-    echo "  -s <directory>     : specify directory where to store all notes."
-    echo "  -e <editor>                : specify EDITOR for this session only."
-    echo "  -l                 : List existing notes"
-    echo "  -a                 : Add new note"
-    echo "  -m <note>          : Modify note"
-    echo "  -d <note>          : Modify date for note"
-    echo "  -r <note>          : Remove note"
-    echo "  -v                 : Print version"
+    echo "Usage:"
+    echo "  $0 [OPTION] ..."
+    echo ""
+       cat << __NOWCONF__ 
+${BASENAME} configuration is:
+
+base directory:                ${BASEDIR}/
+notes archive:         ${NOTESDIR}/
+notes database:                ${DB}
+rc file:               $RCFILE
+text editor:           ${EDITOR}
+terminal:              ${TERMINAL}
+jq executable:         ${JQ}
+__NOWCONF__
+
+       echo ""
+    echo "The script's parameters are:"
+    echo "  -h | --help                        : This help text"
+    echo "  -l | --list                        : List existing notes"
+    echo "  -a | --add <title>         : Add new note"
+    echo "  -m | --modify <note>               : Modify note"
+    echo "  -d | -date <note>          : Modify date for note"
+    echo "  -r | --remove <note>               : Remove note"
+    echo "  -v | --version             : Print version"
+    echo "  --userconf                 : Export User config file"
 }
 
 function addnote() {
        NOTETITLE="$1"
        echo "adding new note - \"$NOTETITLE\""
-       NOW=$(date +%s)
        LASTID=$($JQ '.notes[-1].id | tonumber' $DB)
        [ null == $LASTID ] && LASTID=0
        NOTEID=$(( $LASTID + 1 ))
@@ -90,6 +115,25 @@ function rmnote() {
        echo "removing note $NOTE"
 }
 
+function export_config() {
+       if [ -r ${RCFILE} ]; then
+               echo "Backing up current '${RCFILE}'...."
+               mv -f ${RCFILE} ${RCFILE}.$(date +%Y%m%d_%H%M)
+       fi
+       echo "Writing '${RCFILE}'...."
+       sed  -n '/^set_defaults() {/,/^} # end set_defaults, do not change this line./p' $0 \
+       | grep -v set_defaults \
+       | sed -e 's/^\([^=]*\)=\${\1:-\([^}]*\)}/\1=\2/' \
+       > ${RCFILE}
+       if [ -r ${RCFILE} ]; then
+               echo "Taking no further action."
+               exit 0
+       else
+               echo "Could not write '${RCFILE}'...!"
+               exit 1
+       fi
+}
+
 # we should expand on this function to add a sample note and explain a little bit
 # how the program works.
 function firstrun() {
@@ -111,15 +155,16 @@ jq executable:            ${JQ}
        case $ANSWER in
                y|Y )
                        mkdir -p $NOTESDIR
-                       cat << "__EOL__" > ${DB}
+                       cat << __EOL__ > ${DB}
 {
+       "params": {
+               "version": "${VERSION}",
+               "dbversion": "${NOW}"
+       },
        "notes": []
 }
 __EOL__
-                       ;;
-               n|N )
-                       echo "No changes made. Exiting"
-                       exit
+                       echo; echo "All done, you can now write your first note."
                        ;;
                * )
                        echo "No changes made. Exiting"
@@ -136,7 +181,7 @@ fi
 
 # NOTE: This requires GNU getopt.  On Mac OS X and FreeBSD, you have to install this
 # separately; see below.
-GOPT=`getopt -o hvla:m:d:r: --long help,version,list,add:,modify:,date:,remove:,editor:,storage: \
+GOPT=`getopt -o hvla:m:d:r: --long help,version,list,userconf,add:,modify:,date:,remove:,editor:,storage: \
              -n 'bash-notes' -- "$@"`
 
 if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
@@ -178,16 +223,10 @@ while true; do
                        shift 2
                        rmnote "$NOTE"
                        ;;
-               --editor )
-                       EDITOR="$2"
-                       shift 2
-                       echo "changed EDITOR TO \"$EDITOR\""
-                       ;;
-               --storage )
-                       BASEDIR="$2"
-                       shift 2
-                       echo "changed BASEDIR TO \"$BASEDIR\""
-                       # firstrun
+               --userconf )
+                       export_config
+                       echo "config exported to \"$RCFILE\""
+                       exit
                        ;;
                -- )
                        shift; break