From ed7774292c866eb1ca5be8c8b022e06ece900993 Mon Sep 17 00:00:00 2001 From: Thomas Vanbesien Date: Fri, 19 Jun 2026 10:54:56 +0200 Subject: misc: make notes launcher more robust - better error management - better logging logic --- .local/bin/notes | 61 +++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 12 deletions(-) (limited to '.local/bin/notes') diff --git a/.local/bin/notes b/.local/bin/notes index aa34960..72c4b5d 100755 --- a/.local/bin/notes +++ b/.local/bin/notes @@ -1,17 +1,54 @@ #!/usr/bin/bash -set -euo pipefail +set -Eeuo pipefail -APP_NAME=notes +_srealpath() { + local path=$1 + realpath "$path" 2>/dev/null && return + printf '%s\n' "$path" +} + +_err_handler() { + local status=$? + local cmd=$BASH_COMMAND + local line=${BASH_LINENO[0]} + local err_log err_msg + local temp + + err_log=$({ + printf "error: command failed\n\n" + printf '\t%-10s: %s\n' \ + "at" "$(_srealpath "${BASH_SOURCE[1]}"):$line" \ + "command" "$cmd" \ + "status" "$status" + printf '\nstack:\n\n' + local i + for ((i = 1; i < ${#FUNCNAME[@]}; ++i)); do + printf '\t%s at %s:%s\n' \ + "${FUNCNAME[i]}" \ + "$(_srealpath "${BASH_SOURCE[i]}")" \ + "${BASH_LINENO[$((i - 1))]}" + done + }) + if temp=$(mktemp --suffix .log /tmp/notes.XXXXXXXXXX) && + printf '%s\n' "$err_log" >"$temp"; then + err_msg="Log saved to $temp" + else + err_msg="Could not create temp file for log" + fi + notify-send --expire-time 0 "Failed to open notes" "$err_msg" +} + +trap _err_handler ERR + +################################################################################ -# Log with notify-send and exit 1 -err() { - notify-send --app-name="$APP_NAME" --icon="accessories-text-editor" \ - "Neovim notes plugin" "$NOTES_DIR does not exist or is not a directory" - exit 1 +main() { + local app_name=notes + [[ -d $NOTES_DIR ]] + cd "$NOTES_DIR" + exec foot --title "$app_name" -- \ + tmux new-session -A -D -s "$app_name" -- \ + nvim +NotesFindTags } -[[ -d $NOTES_DIR ]] || err -cd "$NOTES_DIR" -exec foot -- \ - tmux new-session -A -D -s "$APP_NAME" -- \ - nvim -c "NotesFindTags" +if [[ ${BASH_SOURCE[0]} == "$0" ]]; then main; fi -- cgit v1.3.1