X-Git-Url: https://git.cyclocoop.org/?p=tool%2Fhledger.git;a=blobdiff_plain;f=script%2Ftimelog;fp=script%2Ftimelog;h=58e519b73819eeea7dec8ff170fd847e1bdd866c;hp=0000000000000000000000000000000000000000;hb=707b0a621cd3c97d5d7e22e855272b3f865a2d56;hpb=30e9b83c521f5149836e1ef0b544676370721efe diff --git a/script/timelog b/script/timelog new file mode 100755 index 0000000..58e519b --- /dev/null +++ b/script/timelog @@ -0,0 +1,64 @@ +#!/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