diff --git a/journal.sh b/journal.sh new file mode 100755 index 0000000..903440f --- /dev/null +++ b/journal.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env zsh + +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