tb-dotfiles/home/.zshrc.d/notes.sh

72 lines
1.1 KiB
Bash
Executable file

#!/bin/bash
notes() {
local -r NOTES_DIR="${NOTES_DIR:-${HOME}/notes}"
for ARG in "$@"; do
(
set -euo pipefail
mkdir -p "$NOTES_DIR"
cd "$NOTES_DIR"
case "${ARG}" in
'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
) || return $?
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
local -r EDITOR="${EDITOR:-vim}"
local EDITOR_OPTIONS=()
if [[ "${EDITOR}" =~ 'vim$' ]]; then
EDITOR_OPTIONS=(
'-c'
'set spell'
)
fi
"${EDITOR}" "${EDITOR_OPTIONS[@]}" "${FILE_PATH}"
)
}