-#!/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