Support for encrypted notes added.
This commit is contained in:
38
notestorm
38
notestorm
@@ -50,6 +50,14 @@ infobox() {
|
||||
read -n1 -t $messageTimeout continue
|
||||
}
|
||||
|
||||
inputbox() {
|
||||
# Returns: text entered by the user
|
||||
# Args 1, Instructions for box.
|
||||
# args: 2 initial text (optional)
|
||||
dialog --backtitle "$(gettext "Enter text and press enter.")" \
|
||||
--inputbox "$1" 0 0 "$2" --stdout
|
||||
}
|
||||
|
||||
yesno() {
|
||||
# Returns: Yes or No
|
||||
# Args: Question to user.
|
||||
@@ -80,6 +88,7 @@ menulist() {
|
||||
more_menu() {
|
||||
# Options for the submenu go in the options array.
|
||||
declare -a options=(
|
||||
"encrypt" "$(gettext "Encrypt")"
|
||||
"delete" "$(gettext "Delete")")
|
||||
local action="$(dialog --backtitle "$(gettext "Use the up and down arrow keys to find the option you want, then press enter to select it.")" \
|
||||
--no-tags \
|
||||
@@ -87,6 +96,7 @@ more_menu() {
|
||||
0 0 0 ${options[@]} --stdout)"
|
||||
case "$action" in
|
||||
"delete") delete_note "$1";;
|
||||
"encrypt") encrypt_note "$1";;
|
||||
"") return;;
|
||||
esac
|
||||
}
|
||||
@@ -118,7 +128,11 @@ delete_note() {
|
||||
}
|
||||
|
||||
display_note() {
|
||||
markdown "$1" | eval "$pager"
|
||||
if [[ "${1##*.}" == "gpg" ]]; then
|
||||
gpg -d "$1" | markdown | eval "$pager"
|
||||
else
|
||||
markdown "$1" | eval "$pager"
|
||||
fi
|
||||
}
|
||||
|
||||
edit_note() {
|
||||
@@ -132,6 +146,26 @@ edit_note() {
|
||||
fi
|
||||
}
|
||||
|
||||
encrypt_note() {
|
||||
# function requires exactly 1 argument.
|
||||
if [[ $# -ne 1 ]]; then
|
||||
return
|
||||
fi
|
||||
# Get a human readable name for the new note.
|
||||
local noteName="$(inputbox "$(gettext "Please enter a descriptive name for the encrypted note:")")"
|
||||
if [[ -z "$noteName" ]]; then
|
||||
# No name supplied, so return
|
||||
return
|
||||
fi
|
||||
# Encrypt the given file and if successful, remove the original.
|
||||
if gpg -o "${1%/*}/${noteName%.md*}.md.gpg" -c "$1" ; then
|
||||
rm -f "$1"
|
||||
infobox "$(gettext "Note encrypted.")"
|
||||
return
|
||||
fi
|
||||
infobox "$(gettext "Encryption failed.")"
|
||||
}
|
||||
|
||||
# Configuration section
|
||||
# Available arguments in both long and short versions stored in associative array.
|
||||
declare -A argList=(
|
||||
@@ -208,7 +242,7 @@ while [ "$action" != "exit" ]; do
|
||||
for i in "${notes[@]}" ; do
|
||||
noteMenu+=("$i")
|
||||
if [[ "${i##*.}" == "gpg" ]]; then
|
||||
noteMenu+=("$(basename "${i}" .gpg)")
|
||||
noteMenu+=("$(gettext "[enc]") $(basename "${i%.md.gpg}")")
|
||||
else
|
||||
noteMenu+=("$(head -1 "${i}")")
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user