#! /bin/bash pick_date() { YEAR=${YEAR:-22} while read -p 'Month? ' -r MONTH; do [ -z $MONTH ] && MONTH=$(date +%m) MONTH=$(printf "%02d" $MONTH) date -d $YEAR-$MONTH-01 &>/dev/null && break done while read -p 'Day? ' -r DAY; do [ -z $DAY ] && DAY=$(date +%d) DAY=$(printf "%02d" $DAY) date -d $YEAR-$MONTH-$DAY &>/dev/null && break done FILE=~/vimwiki/diary/20$YEAR-$MONTH-$DAY.md vim -c 'Goyo' $FILE } print_today() { cat ~/vimwiki/diary/$(date --iso-8601).md } edit_today() { vim ~/vimwiki/diary/$(date --iso-8601).md } add_entry() { echo - "$@" >>~/vimwiki/diary/$(date --iso-8601).md } case "$1" in "") pick_date ;; p) print_today ;; today) edit_today ;; *) add_entry "$@" ;; esac