From d80ac20a06af4d46b263da70ad6de2c37ad6d5ec Mon Sep 17 00:00:00 2001 From: danix Date: Fri, 24 Mar 2023 15:12:10 +0100 Subject: [PATCH] improved the help text --- notes.sh | 97 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 68 insertions(+), 29 deletions(-) diff --git a/notes.sh b/notes.sh index 84e06b7..3fc89e3 100644 --- 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 : specify directory where to store all notes." - echo " -e : specify EDITOR for this session only." - echo " -l : List existing notes" - echo " -a : Add new note" - echo " -m : Modify note" - echo " -d : Modify date for note" - echo " -r : 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 : 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 -- 2.20.1