#!/bin/bash # ## Wrapper script for quart # ## Takes care of ~/.quart.d # ## .quart.d ## |-- archive ## | |-- 190706_Saturday_220700.org ## | |-- 190707_Sunday_220701.org ## |-- today.org # ## ## Initialize values ## # ED="${EDITOR:-emacs -nw}" QHOME="${QUART_HOME:-$HOME/.quart.d}" ARCHIVE="$QHOME"/archive TODAY_FILE="$QHOME"/today.org DATE_CMD="date +%y%m%d_%A_%H%m%S" if [[ -z $(which quart) ]]; then echo "quart is not installed" exit 1 fi QUART_CMD=$(which quart) function archive { if [[ ! -d "$ARCHIVE" ]]; then echo "archive directory does not exist" exit 1 fi if [[ -f "$TODAY_FILE" ]]; then mv "$TODAY_FILE" "$ARCHIVE/$($DATE_CMD)" return 1 fi return 0 } function make_today { if [[ ! -d "$QHOME" ]]; then echo "quart home directory does not exist" exit 1 fi cat > "$TODAY_FILE" << EOF #+START: 9:00 # quart schedule created at $(date "+%A %d of %B the year of our lord %Y") # Avaliable task flags: # ! Urgent, ? Maybe, @ External # Use `=` to signal a task repeat EOF } function edit_today { if [[ ! -f "$TODAY_FILE" ]]; then echo "run new first" exit 1 fi $ED "$TODAY_FILE" } function summary_today { if [[ ! -f "$TODAY_FILE" ]]; then return 0 fi "$QUART_CMD" "$TODAY_FILE" -s } function make_qhome { if [[ -d "$QHOME" ]]; then echo "QUART_HOME already exists in $QHOME" else mkdir "$QHOME" echo "QUART_HOME initialized in $QHOME" fi if [[ -d "$ARCHIVE" ]]; then echo "archive directory already exists" else mkdir "$ARCHIVE" echo "archive directory created" fi } if [ $# -lt 1 ]; then if [[ ! -d "$QHOME" ]]; then echo "run init first" exit 1 fi if [[ ! -f "$TODAY_FILE" ]]; then echo "run new first" exit 1 fi echo -e "Current schedule:\n" "$QUART_CMD" "$TODAY_FILE" -s exit 0 fi if [[ "$1" == "-" ]]; then shift "$QUART_CMD" "$TODAY_FILE" $@ exit $? fi case $1 in init|i) make_qhome exit 0 # create ~/.quart.d director structure ;; new|n) shift archive make_today edit_today summary_today exit 0 # backup the old schedule and create a new one ;; edit|e) shift edit_today summary_today exit 0 # edit the current schedule ;; remove|rm) shift archive exit 0 # rm current schedule, after backing it up ;; cat|c) shift cat "$TODAY_FILE" exit 0 ;; help|h|-h|--help) shift cat << EOF qc -- bash wrapper for quart Usage: $0 [OPTION] $0 - [quart option] OPTIONS: init | i initialize quart home new | n create new schedule (archives current one) remove | rm remove current schedule (and archive it) edit | e edit current schedule cat | c print current schedule help | h show this help - pass arguments to quart EOF exit 0 ;; *) echo "qc: '$1' is not a valid option" shift exit 1 ;; esac