ENH: listall doesn't simply use concatenated task lists.
The simplistic "listall" action implementation just uses _list() on the concatenation of active and done task lists. This has the following shortcomings: - Task numbers shown for archived tasks from done.txt are invalid. - As the number of done tasks likely greatly outnumbers the number of active tasks, the task number padding is often larger than expected (e.g. 0005 instead of 05). - Verbose output lists all tasks as originating from TODO, whereas it should differentiate between TODO: and DONE: sources. The main challenge is to keep processing all tasks through a single pass of _list(), so that there is a single, unified sorting applied to all tasks. A custom AWK script sets all (originally invalid) task numbers from done.txt to "0", meaning "archived task". The verbose message from _list() is replaced with a custom message that shows the tasks from todo.txt, done.txt, and totals. Oh, and added tests for the previously untested "listall" action.
This commit is contained in:
committed by
Gina Trapani
parent
17658c852d
commit
54f15a7854
15
todo.sh
15
todo.sh
@@ -1072,7 +1072,20 @@ case $action in
|
||||
shift ## Was lsa; new $1 is first search term
|
||||
|
||||
cat "$TODO_FILE" "$DONE_FILE" > "$TMP_FILE"
|
||||
_list "$TMP_FILE" "$@"
|
||||
TOTAL=$( sed -n '$ =' "$TODO_FILE" )
|
||||
|
||||
post_filter_command="awk -v TOTAL=$TOTAL -v PADDING=${#TOTAL} '{ \$1 = sprintf(\"%\" PADDING \"d\", (\$1 > TOTAL ? 0 : \$1)); print }' "
|
||||
TODOTXT_VERBOSE=0 _list "$TMP_FILE" "$@"
|
||||
|
||||
if [ $TODOTXT_VERBOSE -gt 0 ]; then
|
||||
TDONE=$( sed -n '$ =' "$DONE_FILE" )
|
||||
TASKNUM=$(TODOTXT_PLAIN=1 TODOTXT_VERBOSE=0 _list "$TODO_FILE" "$@" | sed -n '$ =')
|
||||
DONENUM=$(TODOTXT_PLAIN=1 TODOTXT_VERBOSE=0 _list "$DONE_FILE" "$@" | sed -n '$ =')
|
||||
echo "--"
|
||||
echo "$(getPrefix "$TODO_FILE"): ${TASKNUM:-0} of ${TOTAL:-0} tasks shown"
|
||||
echo "$(getPrefix "$DONE_FILE"): ${DONENUM:-0} of ${TDONE:-0} tasks shown"
|
||||
echo "total $((TASKNUM + DONENUM)) of $((TOTAL + TDONE)) tasks shown"
|
||||
fi
|
||||
;;
|
||||
|
||||
"listfile" | "lf" )
|
||||
|
||||
Reference in New Issue
Block a user