tb-dotfiles/chezmoi/dot_zshrc.d/executable_notes.sh

94 lines
1.4 KiB
Bash
Raw Normal View History

2021-08-13 12:55:12 -04:00
#!/bin/bash
notes() {
local NOTES_DIR="${NOTES_DIR:-${HOME}/notes}"
2021-09-27 09:50:24 -04:00
local -r EDITOR="${EDITOR:-vim}"
local EDITOR_OPTIONS=()
if [[ "${EDITOR}" =~ 'vim$' ]]; then
EDITOR_OPTIONS=(
'-c'
'set spell'
)
fi
2021-08-13 12:55:12 -04:00
for ARG in "$@"; do
(
set -euo pipefail
mkdir -p "$NOTES_DIR"
cd "$NOTES_DIR"
case "${ARG}" in
'category')
shift
export NOTES_DIR="$NOTES_DIR/$1"
shift
notes "$@"
exit 255
;;
2021-09-27 09:50:24 -04:00
'fzf')
"${EDITOR}" "${EDITOR_OPTIONS[@]}" "$(notes ls | fzf)"
;;
2021-08-13 12:55:12 -04:00
'ls')
ag -g '' -l "${NOTES_DIR}" | sort -hr
;;
'status')
git status
;;
'commit')
git add .
git commit -m "notes commit $(date)"
;;
'push')
git push
;;
'pull')
git pull
;;
*)
>&2 echo "invalid argument ${ARG}"
exit 1
;;
esac
)
local EXIT_CODE=$?
if [ $EXIT_CODE != 0 ]; then
if [ $EXIT_CODE = 255 ]; then
return 0
fi
return $EXIT_CODE
fi
2021-08-13 12:55:12 -04:00
done
# return if the above loop didn't return a bad code
if [ -n "$*" ]; then
return
fi
(
set -euo pipefail
readonly NOW="$(date +%s)"
readonly FILE_PATH="${NOTES_DIR}/$(date -d "@${NOW}" +'%Y/%m/%Y-%m-%d').md"
mkdir -p "$(dirname "${FILE_PATH}")"
if ! [ -e "${FILE_PATH}" ]; then
echo -e "# $(date -d "@${NOW}" +'%a %d %b %Y')\n\n## todo\n\n" > "${FILE_PATH}"
fi
"${EDITOR}" "${EDITOR_OPTIONS[@]}" "${FILE_PATH}"
2021-08-13 12:55:12 -04:00
)
}