#!/bin/sh -eu # ACTION: initialize from ./ test -L "$0" && tool="$(readlink -e "$0")" || tool=$0 tool=$(readlink -e "${tool%/*}"/.) root=$(readlink -e "${root:-"${0%/*}"/.}") TIMELOG=${TIMELOG:-"$root"/time.log} rule_edit () { touch "$TIMELOG" ${EDITOR:-vim} "$@" "$TIMELOG" } rule_in () { date=$(date '+%Y-%m-%d %H:%M:%S') touch "$TIMELOG" { last=$(tail -n 1 "$TIMELOG") if test ! "$last" = "${last#i}" then printf 'o %s %s\n' "$date" fi printf 'i %s %s\n' "$date" "$*" } | tee /dev/stderr >>"$TIMELOG" } rule_help () { cat >&2 <<-EOF Syntax: ${0##*/} [e|edit] ${0##*/} [i|in] Path:To:Task Comment ${0##*/} [s|server] ${0##*/} [o|out] ${0##*/} \$hledger_command EOF } rule_hledger () { set -x hledger ${HLEDGER_FLAGS-} -f "$TIMELOG" "$@" } rule_server () { cd "$root" set -x hledger-web --server ${HLEDGER_WEB_FLAGS-} -f "$TIMELOG" "$@" } rule_out () { last=$(tail -n 1 "$TIMELOG") if test "$last" = "${last#o}" then date=$(date '+%Y-%m-%d %H:%M:%S') { printf 'o %s %s\n' "$date" "$*" } | tee /dev/stderr >>"$TIMELOG" fi } rule=${1:-help} test $# = 0 || shift case $rule in (i|'in') rule_in "$@";; (o|out) rule_out "$@";; (e|edit) rule_edit "$@";; (s|server) rule_server "$@";; (h|help|-h|--help|'') rule_help $rule "$@";; (*) rule_hledger $rule "$@";; esac