Ajout : vim/
[tool/hledger.git] / timelog
1 #!/bin/sh -eu
2
3 # ACTION: initialize from ./
4 test -L "$0" && tool="$(readlink -e "$0")" || tool=$0
5 tool=$(readlink -e "${tool%/*}"/.)
6 root=$(readlink -e "${root:-"${0%/*}"/.}")
7
8 TIMELOG=${TIMELOG:-"$root"/time.log}
9
10 rule_edit () {
11 touch "$TIMELOG"
12 ${EDITOR:-vim} "$@" "$TIMELOG"
13 }
14 rule_in () {
15 date=$(date '+%Y-%m-%d %H:%M:%S')
16 touch "$TIMELOG"
17 {
18 last=$(tail -n 1 "$TIMELOG")
19 if test ! "$last" = "${last#i}"
20 then printf 'o %s %s\n' "$date"
21 fi
22 printf 'i %s %s\n' "$date" "$*"
23 } | tee /dev/stderr >>"$TIMELOG"
24 }
25 rule_help () {
26 cat >&2 <<-EOF
27 Syntax:
28 ${0##*/} [e|edit]
29 ${0##*/} [i|in] Path:To:Task Comment
30 ${0##*/} [s|server]
31 ${0##*/} [o|out]
32 ${0##*/} \$hledger_command
33 EOF
34 }
35 rule_hledger () {
36 set -x
37 hledger ${HLEDGER_FLAGS-} -f "$TIMELOG" "$@"
38 }
39 rule_server () {
40 cd "$root"
41 set -x
42 hledger-web --server ${HLEDGER_WEB_FLAGS-} -f "$TIMELOG" "$@"
43 }
44 rule_out () {
45 last=$(tail -n 1 "$TIMELOG")
46 if test "$last" = "${last#o}"
47 then
48 date=$(date '+%Y-%m-%d %H:%M:%S')
49 {
50 printf 'o %s %s\n' "$date" "$*"
51 } | tee /dev/stderr >>"$TIMELOG"
52 fi
53 }
54
55 rule=${1:-help}
56 test $# = 0 || shift
57 case $rule in
58 (i|'in') rule_in "$@";;
59 (o|out) rule_out "$@";;
60 (e|edit) rule_edit "$@";;
61 (s|server) rule_server "$@";;
62 (h|help|-h|--help|'') rule_help $rule "$@";;
63 (*) rule_hledger $rule "$@";;
64 esac