danix
's git repository
home
/
my projects
/
bash-notes.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b9f2102
)
added show option to display a note using a PAGER instead of an EDITOR.
author
danix
<danix@danix.xyz>
Wed, 29 Mar 2023 08:30:22 +0000
(10:30 +0200)
committer
danix
<danix@danix.xyz>
Wed, 29 Mar 2023 08:30:22 +0000
(10:30 +0200)
notes.sh
patch
|
blob
|
blame
|
history
diff --git
a/notes.sh
b/notes.sh
index
04141e6
..
d3e6a53
100755
(executable)
--- a/
notes.sh
+++ b/
notes.sh
@@
-14,7
+14,11
@@
if [[ $DEBUG == true ]]; then
fi
PID=$$
fi
PID=$$
-VERSION="0.2"
+BASENAME=$( basename "$0" )
+NOW=$(date +%s)
+
+VERSION="0.3"
+DBVERSION=${VERSION}_${NOW}
set_defaults() {
# Binaries to use
set_defaults() {
# Binaries to use
@@
-25,6
+29,9
@@
TERMINAL=${TERMINAL:-/usr/bin/alacritty}
# your editor program, otherwise the script will fail.
# see example in the addnote function
TERM_OPTS="--class notes --title notes -e "
# your editor program, otherwise the script will fail.
# see example in the addnote function
TERM_OPTS="--class notes --title notes -e "
+# Setting PAGER here overrides whatever is set in your default shell
+# comment this option to use your default pager if set in your shell.
+PAGER=${PAGER:-/usr/bin/more}
# set this to true to have output in plain text
# or use the -p option on the command line before every other option
# set this to true to have output in plain text
# or use the -p option on the command line before every other option
@@
-43,8
+50,6
@@
set_defaults
# Do not edit below this point
RCFILE=${RCFILE:-~/.config/bash-notes.rc}
TMPDB=/tmp/db.json
# 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"
if [ ! -x "$JQ" ]; then
echo "jq not found in your PATH"
@@
-117,6
+122,7
@@
__NOWCONF__
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 " -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 ""
echo " -v | --version : Print version"
echo " --userconf : Export User config file"
echo ""
@@
-232,12
+238,12
@@
function rmnote() {
# shellcheck disable=SC2016,SC2086
FILE=$($JQ -r --arg i $OK '.notes[] | select(.id == $i) | .file' $DB)
if [ "$TITLE" ]; then
# shellcheck disable=SC2016,SC2086
FILE=$($JQ -r --arg i $OK '.notes[] | select(.id == $i) | .file' $DB)
if [ "$TITLE" ]; then
- # shellcheck disable=SC2016,SC2086
- $JQ -r --arg i $OK 'del(.notes[] | select(.id == $i))' $DB > $TMPDB
- # shellcheck disable=SC2086
- mv $TMPDB $DB
- rm $NOTESDIR/$FILE
- echo "Deleted note $TITLE"
+
# shellcheck disable=SC2016,SC2086
+
$JQ -r --arg i $OK 'del(.notes[] | select(.id == $i))' $DB > $TMPDB
+
# shellcheck disable=SC2086
+
mv $TMPDB $DB
+
rm $NOTESDIR/$FILE
+
echo "Deleted note $TITLE"
else
echo "note not found"
exit 1
else
echo "note not found"
exit 1
@@
-245,6
+251,24
@@
function rmnote() {
fi
}
fi
}
+function shownote() {
+ NOTE=$1
+
+ # shellcheck disable=SC2155
+ local OK=$(check_noteID "$NOTE")
+ if [ ! "$OK" ]; then
+ echo "invalid note \"$NOTE\""
+ echo "Use the note ID that you can fetch after listing your notes"
+ exit 1
+ fi
+
+ FILE=$($JQ -r --arg i $OK '.notes[] | select(.id == $i) | .file' $DB)
+
+ if [ "$FILE" ]; then
+ $PAGER ${NOTESDIR}/${FILE}
+ fi
+}
+
function export_config() {
if [ -r ${RCFILE} ]; then
echo "Backing up current '${RCFILE}'...."
function export_config() {
if [ -r ${RCFILE} ]; then
echo "Backing up current '${RCFILE}'...."
@@
-289,7
+313,7
@@
jq executable: ${JQ}
{
"params": {
"version": "${VERSION}",
{
"params": {
"version": "${VERSION}",
- "dbversion": "${
NOW
}"
+ "dbversion": "${
DBVERSION
}"
},
"notes": []
}
},
"notes": []
}
@@
-309,17
+333,15
@@
if [[ ! -d $NOTESDIR ]]; then
firstrun
fi
firstrun
fi
-# NOTE: This requires GNU getopt. On Mac OS X and FreeBSD, you have to install this
-# separately; see below.
# shellcheck disable=SC2006
# shellcheck disable=SC2006
-GOPT=`getopt -o hvpla:e:d: --long help,version,list,plain,userconf,add:,edit:,delete:,editor:,storage: \
- -n 'bash-notes' -- "$@"`
+GOPT=$(getopt -o hvpla::e::d::s:: --long help,version,list,plain,userconf,backup::,add::,edit::,delete::,show:: -n 'bash-notes' -- "$@")
# shellcheck disable=SC2181
if [ $? != 0 ] ; then helptext >&2 ; exit 1 ; fi
# Note the quotes around `$GOPT': they are essential!
eval set -- "$GOPT"
# shellcheck disable=SC2181
if [ $? != 0 ] ; then helptext >&2 ; exit 1 ; fi
# Note the quotes around `$GOPT': they are essential!
eval set -- "$GOPT"
+unset GOPT
while true; do
case "$1" in
while true; do
case "$1" in
@@
-340,20
+362,53
@@
while true; do
exit
;;
-a | --add )
exit
;;
-a | --add )
- TITLE="$2"
+ case "$2" in
+ '' )
+ read -r -p "Title: " TITLE
+ ;;
+ * )
+ TITLE=$2
+ ;;
+ esac
shift 2
addnote "$TITLE"
;;
-e | --edit )
shift 2
addnote "$TITLE"
;;
-e | --edit )
- NOTE="$2"
+ case "$2" in
+ '' )
+ read -r -p "Note ID: " NOTE
+ ;;
+ * )
+ NOTE=$2
+ ;;
+ esac
shift 2
editnote "$NOTE"
;;
-d | --delete )
shift 2
editnote "$NOTE"
;;
-d | --delete )
- NOTE="$2"
+ case "$2" in
+ '' )
+ read -r -p "Note ID: " NOTE
+ ;;
+ * )
+ NOTE=$2
+ ;;
+ esac
shift 2
rmnote "$NOTE"
;;
shift 2
rmnote "$NOTE"
;;
+ -s | --show )
+ case "$2" in
+ '' )
+ read -r -p "Note ID: " NOTE
+ ;;
+ * )
+ NOTE=$2
+ ;;
+ esac
+ shift 2
+ shownote "$NOTE"
+ ;;
--userconf )
export_config
# shellcheck disable=SC2317
--userconf )
export_config
# shellcheck disable=SC2317
@@
-371,3
+426,6
@@
while true; do
esac
done
esac
done
+if [ -z $1 ]; then
+ helptext
+fi