scripts/journal.sh

80 lines
1.5 KiB
Bash
Raw Normal View History

#!/usr/bin/env zsh
2023-08-28 18:27:24 +00:00
# ====
# journal.sh
# Manages a simple journaling system.
#
# Written for Mac
#
# Uses GNU coreutils, gdate, gsed, etc.
# ====
set_dates() {
nowtime=$(gdate "+%H:%M") || exit
day=$(gdate "+%A" -d "$*") || exit
daynum=$(gdate "+%e" -d "$*") || exit
month=$(gdate "+%m" -d "$*") || exit
year=$(gdate "+%Y" -d "$*") || exit
date=$(gdate "+%Y-%m-%d" -d "$*") || exit
date_path=$(gdate "+%Y/%m" -d "$*") || exit
journal_prefix=~/code/txt/cal
file="$journal_prefix/$date_path/$date.txt"
}
change_status="Edited"
for arg in $@
case "$arg" in
show)
shift
set_dates $*
if [ ! -f "$file" ]; then
printf "journal entry for $date not found.\n"
exit 1;
fi
if [[ $(wc -l < $file) -le $["$LINES" - 20] ]]; then
cat "$file"
else
$PAGER "$file"
fi
exit 0
esac
set_dates $*
cd "$journal_prefix"
#setup header
if [ ! -f "$file" ]; then
mkdir -p $(dirname "$file") 2> /dev/null
printf "%0.s=" {1..13} >> $file
printf "\n" >> $file
cal -h "$month" "$year" | gsed "0,/$daynum/{s//XX/}" >> $file
truncate -s -1 $file
printf "\n$day\n" >> $file
printf "%0.s=" {1..13} >> $file
printf "\n" >> $file
change_status="Created"
fi
if ! grep -xq "$nowtime" "$file"; then
printf "\n* At $nowtime\n" >> $file
fi
$EDITOR $file
stty sane
printf "Save in git? [Y|n]: "
read yn
case $yn in
Y|y| )
git add "$file"
git commit -S -m "$change_status entry for $date at $nowtime" -m "$(randomart.py --ascii "$file")"
esac