Showing
1 changed file
with
68 additions
and
17 deletions
| @@ -6,35 +6,44 @@ source $0:A:h/ttyhelper.sh | @@ -6,35 +6,44 @@ source $0:A:h/ttyhelper.sh | ||
| 6 | 6 | ||
| 7 | function tasksallsince() { | 7 | function tasksallsince() { |
| 8 | [[ $# -lt 1 ]] && return 1 | 8 | [[ $# -lt 1 ]] && return 1 |
| 9 | - local DATE=$1 | ||
| 10 | - shift | ||
| 11 | - taskuuids \( \( \( +COMPLETED or +DELETED \) end.after:$DATE \) or \ | ||
| 12 | - +PENDING \) $@ | 9 | + taskuuids \(\(\( +COMPLETED or +DELETED \) end.after:${1} \) \ |
| 10 | + or +PENDING \) $@ | ||
| 13 | } | 11 | } |
| 14 | 12 | ||
| 15 | function datetimedescription() { | 13 | function datetimedescription() { |
| 16 | - for UUID in $(tasksallsince 2018-03-31) | 14 | + [[ $# -lt 1 ]] && return 1 |
| 15 | + for UUID in $(tasksallsince $@) | ||
| 17 | do | 16 | do |
| 18 | DESCRIPTION="$(taskdescription $UUID)" | 17 | DESCRIPTION="$(taskdescription $UUID)" |
| 19 | PROJECT="$(taskproject $UUID)" | 18 | PROJECT="$(taskproject $UUID)" |
| 19 | + COMPLETED="$(taskuuids $UUID \( +COMPLETED or +DELETED \))" | ||
| 20 | for T in $(tasktimes $UUID) | 20 | for T in $(tasktimes $UUID) |
| 21 | do | 21 | do |
| 22 | extracttime $T | 22 | extracttime $T |
| 23 | - printf "%s;%s;%s;%s\n" $TIMEKEY $TIME $PROJECT $DESCRIPTION | 23 | + printf "%s;%s;%s;%s;%s\n" \ |
| 24 | + $TIMEKEY $TIME $PROJECT $DESCRIPTION $COMPLETED | ||
| 24 | done | 25 | done |
| 25 | done | 26 | done |
| 26 | } | 27 | } |
| 27 | 28 | ||
| 28 | function report() { | 29 | function report() { |
| 29 | - for LINE in "${(f)$(datetimedescription|sort -t\; -k1)}" | 30 | + [[ $# -lt 1 ]] && return 1 |
| 31 | + local D DATE T | ||
| 32 | + DATE=$1 | ||
| 33 | + for LINE in "${(f)$(datetimedescription $@|sort -t\; -f -k1,1 -k3,3)}" | ||
| 30 | do | 34 | do |
| 31 | set -- ${(s(;))LINE} | 35 | set -- ${(s(;))LINE} |
| 32 | - if [[ $DATE != $1 ]] | ||
| 33 | - then | ||
| 34 | - DATE=$1 | ||
| 35 | - printf "%s\n" $(underline "" $DATE) | ||
| 36 | - fi | ||
| 37 | - printf "%s [%s] - %s\n" $(bold "" $2) $3 $4 | 36 | + if [[ -n $1 && $(date -d $1 +%s) -ge $(date -d $DATE +%s) ]] |
| 37 | + then | ||
| 38 | + if [[ $D != $1 ]] | ||
| 39 | + then | ||
| 40 | + D=$1 | ||
| 41 | + printf "%s\n" $(underline "" $D) | ||
| 42 | + fi | ||
| 43 | + T=$2 | ||
| 44 | + if [[ -n $5 ]] && T=$(bold "" $T) | ||
| 45 | + if [[ -n $D ]] && printf "%s [%s] - %s\n" $T $3 $4 | ||
| 46 | + fi | ||
| 38 | done | 47 | done |
| 39 | } | 48 | } |
| 40 | 49 | ||
| @@ -43,16 +52,58 @@ function usage() { | @@ -43,16 +52,58 @@ function usage() { | ||
| 43 | Usage: %s [-?] [DATETIME] [FILTER] | 52 | Usage: %s [-?] [DATETIME] [FILTER] |
| 44 | 53 | ||
| 45 | OPTIONS: | 54 | OPTIONS: |
| 46 | - -?, --help Show this help | ||
| 47 | - | 55 | + -?, --help Show this help |
| 56 | + -d, --date DATETIME is a date and time identifier as accepted by the | ||
| 57 | + date command. It specifies how long back done tasks | ||
| 58 | + should be considered. | ||
| 59 | + | ||
| 48 | FILTER can be additional taskwarriors filters to limit the result | 60 | FILTER can be additional taskwarriors filters to limit the result |
| 49 | any further. | 61 | any further. |
| 50 | - DATETIME is a date and time identifier as accepted by the date command. | ||
| 51 | - It specifies how long back done tasks should be considered. | ||
| 52 | USAGE | 62 | USAGE |
| 53 | ) | 63 | ) |
| 54 | /usr/bin/printf "${USAGE}\n" $0 | 64 | /usr/bin/printf "${USAGE}\n" $0 |
| 55 | } | 65 | } |
| 56 | 66 | ||
| 67 | +# | ||
| 68 | +# parse command line arguments | ||
| 69 | +# | ||
| 70 | +SHORTOPTS=?d: | ||
| 71 | +LONGOPTS=help,date | ||
| 72 | +ARGS=$(getopt -o ${SHORTOPTS} --long ${LONGOPTS} -n report -- $@) | ||
| 73 | +if [ $? -ne 0 ] | ||
| 74 | +then | ||
| 75 | + usage $0 | ||
| 76 | + exit 1 | ||
| 77 | +fi | ||
| 78 | +eval set -- ${=ARGS} | ||
| 79 | +unset ARGS | ||
| 80 | + | ||
| 81 | +while true | ||
| 82 | +do | ||
| 83 | + case $1 in | ||
| 84 | + '-?'|'--help') | ||
| 85 | + shift | ||
| 86 | + usage $0 | ||
| 87 | + exit 0 | ||
| 88 | + ;; | ||
| 89 | + '-d'|'--date') | ||
| 90 | + DATEFROM=$(date -d ${2} +%Y-%m-%d) | ||
| 91 | + shift 2 | ||
| 92 | + continue | ||
| 93 | + ;; | ||
| 94 | + '--') | ||
| 95 | + shift | ||
| 96 | + break | ||
| 97 | + ;; | ||
| 98 | + *) | ||
| 99 | + echo 'Internal error!' >&2 | ||
| 100 | + exit 1 | ||
| 101 | + ;; | ||
| 102 | + esac | ||
| 103 | +done | ||
| 104 | + | ||
| 105 | +DATEFROM=${DATEFROM:-$(date +%Y-%m-01)} | ||
| 106 | +report $DATEFROM $@ | ||
| 107 | +#datetimedescription $DATEFROM $@|sort -t\; -f -k1,1 -k3,3 | ||
| 57 | 108 | ||
| 58 | # vim: set et ts=4 sw=4: | 109 | # vim: set et ts=4 sw=4: |
Please
register
or
login
to post a comment