Showing
1 changed file
with
68 additions
and
17 deletions
| ... | ... | @@ -6,35 +6,44 @@ source $0:A:h/ttyhelper.sh |
| 6 | 6 | |
| 7 | 7 | function tasksallsince() { |
| 8 | 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 | 13 | function datetimedescription() { |
| 16 | - for UUID in $(tasksallsince 2018-03-31) | |
| 14 | + [[ $# -lt 1 ]] && return 1 | |
| 15 | + for UUID in $(tasksallsince $@) | |
| 17 | 16 | do |
| 18 | 17 | DESCRIPTION="$(taskdescription $UUID)" |
| 19 | 18 | PROJECT="$(taskproject $UUID)" |
| 19 | + COMPLETED="$(taskuuids $UUID \( +COMPLETED or +DELETED \))" | |
| 20 | 20 | for T in $(tasktimes $UUID) |
| 21 | 21 | do |
| 22 | 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 | 25 | done |
| 25 | 26 | done |
| 26 | 27 | } |
| 27 | 28 | |
| 28 | 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 | 34 | do |
| 31 | 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 | 47 | done |
| 39 | 48 | } |
| 40 | 49 | |
| ... | ... | @@ -43,16 +52,58 @@ function usage() { |
| 43 | 52 | Usage: %s [-?] [DATETIME] [FILTER] |
| 44 | 53 | |
| 45 | 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 | 60 | FILTER can be additional taskwarriors filters to limit the result |
| 49 | 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 | 62 | USAGE |
| 53 | 63 | ) |
| 54 | 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 | 109 | # vim: set et ts=4 sw=4: | ... | ... |
Please
register
or
login
to post a comment