Compare commits
7 Commits
archive/co
...
archive/re
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cb53da0c96 | ||
|
|
8e3f2712a8 | ||
|
|
20b7ef6964 | ||
|
|
45e9dc7550 | ||
|
|
a8df23ec3c | ||
|
|
6d860d2506 | ||
|
|
a686659985 |
91
tests/t1950-report.sh
Executable file
91
tests/t1950-report.sh
Executable file
@@ -0,0 +1,91 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='report functionality
|
||||||
|
|
||||||
|
This test checks the reporting and the format of the report file.
|
||||||
|
'
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
cat > todo.txt <<EOF
|
||||||
|
(B) smell the uppercase Roses +flowers @outside
|
||||||
|
stop and think
|
||||||
|
smell the coffee +wakeup
|
||||||
|
make the coffee +wakeup
|
||||||
|
visit http://example.com
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_todo_session 'create new report' <<EOF
|
||||||
|
>>> todo.sh report
|
||||||
|
2009-02-13T04:40:00 5 0
|
||||||
|
TODO: Report file updated.
|
||||||
|
|
||||||
|
>>> todo.sh -p list
|
||||||
|
1 (B) smell the uppercase Roses +flowers @outside
|
||||||
|
4 make the coffee +wakeup
|
||||||
|
3 smell the coffee +wakeup
|
||||||
|
2 stop and think
|
||||||
|
5 visit http://example.com
|
||||||
|
--
|
||||||
|
TODO: 5 of 5 tasks shown
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_todo_session 'report of done tasks' <<EOF
|
||||||
|
>>> todo.sh -A do 3
|
||||||
|
3 x 2009-02-13 smell the coffee +wakeup
|
||||||
|
TODO: 3 marked as done.
|
||||||
|
x 2009-02-13 smell the coffee +wakeup
|
||||||
|
TODO: $HOME/todo.txt archived.
|
||||||
|
|
||||||
|
>>> todo.sh report
|
||||||
|
2009-02-13T04:40:00 4 1
|
||||||
|
TODO: Report file updated.
|
||||||
|
|
||||||
|
>>> todo.sh -p list
|
||||||
|
1 (B) smell the uppercase Roses +flowers @outside
|
||||||
|
3 make the coffee +wakeup
|
||||||
|
2 stop and think
|
||||||
|
4 visit http://example.com
|
||||||
|
--
|
||||||
|
TODO: 4 of 4 tasks shown
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_todo_session 'report performs archiving' <<EOF
|
||||||
|
>>> todo.sh -a do 3
|
||||||
|
3 x 2009-02-13 make the coffee +wakeup
|
||||||
|
TODO: 3 marked as done.
|
||||||
|
|
||||||
|
>>> todo.sh report
|
||||||
|
2009-02-13T04:40:00 3 2
|
||||||
|
TODO: Report file updated.
|
||||||
|
|
||||||
|
>>> todo.sh -p list
|
||||||
|
1 (B) smell the uppercase Roses +flowers @outside
|
||||||
|
2 stop and think
|
||||||
|
3 visit http://example.com
|
||||||
|
--
|
||||||
|
TODO: 3 of 3 tasks shown
|
||||||
|
|
||||||
|
>>> todo.sh -p listfile done.txt
|
||||||
|
2 x 2009-02-13 make the coffee +wakeup
|
||||||
|
1 x 2009-02-13 smell the coffee +wakeup
|
||||||
|
--
|
||||||
|
DONE: 2 of 2 tasks shown
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_todo_session 'report is unchanged when no changes' <<EOF
|
||||||
|
>>> cat report.txt
|
||||||
|
2009-02-13T04:40:00 5 0
|
||||||
|
2009-02-13T04:40:00 4 1
|
||||||
|
2009-02-13T04:40:00 3 2
|
||||||
|
|
||||||
|
>>> todo.sh report
|
||||||
|
2009-02-13T04:40:00 3 2
|
||||||
|
TODO: Report file is up-to-date.
|
||||||
|
|
||||||
|
>>> cat report.txt
|
||||||
|
2009-02-13T04:40:00 5 0
|
||||||
|
2009-02-13T04:40:00 4 1
|
||||||
|
2009-02-13T04:40:00 3 2
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_done
|
||||||
@@ -85,13 +85,8 @@ TODO: $HOME/todo.txt archived.
|
|||||||
TODO: 5 of 5 tasks shown
|
TODO: 5 of 5 tasks shown
|
||||||
|
|
||||||
>>> todo.sh report
|
>>> todo.sh report
|
||||||
|
2009-02-13T04:40:00 5 1
|
||||||
TODO: Report file updated.
|
TODO: Report file updated.
|
||||||
2009-02-13-04:40:00 5 1
|
|
||||||
|
|
||||||
>>> todo.sh report
|
|
||||||
TODO: Report file updated.
|
|
||||||
2009-02-13-04:40:00 5 1
|
|
||||||
2009-02-13-04:40:00 5 1
|
|
||||||
|
|
||||||
>>> todo.sh append g a
|
>>> todo.sh append g a
|
||||||
usage: todo.sh append ITEM# "TEXT TO APPEND"
|
usage: todo.sh append ITEM# "TEXT TO APPEND"
|
||||||
|
|||||||
20
todo.sh
20
todo.sh
@@ -1191,18 +1191,20 @@ note: PRIORITY must be anywhere from A to Z."
|
|||||||
sed '/^x /!d' "$TODO_FILE" >> "$DONE_FILE"
|
sed '/^x /!d' "$TODO_FILE" >> "$DONE_FILE"
|
||||||
sed -i.bak '/^x /d' "$TODO_FILE"
|
sed -i.bak '/^x /d' "$TODO_FILE"
|
||||||
|
|
||||||
NUMLINES=$( sed -n '$ =' "$TODO_FILE" )
|
|
||||||
if [ ${NUMLINES:-0} = "0" ]; then
|
|
||||||
echo "datetime todos dones" >> "$REPORT_FILE"
|
|
||||||
fi
|
|
||||||
#now report
|
|
||||||
TOTAL=$( sed -n '$ =' "$TODO_FILE" )
|
TOTAL=$( sed -n '$ =' "$TODO_FILE" )
|
||||||
TDONE=$( sed -n '$ =' "$DONE_FILE" )
|
TDONE=$( sed -n '$ =' "$DONE_FILE" )
|
||||||
TECHO=$(echo $(date +%Y-%m-%d-%T); echo ' '; echo ${TOTAL:-0}; echo ' ';
|
NEWDATA="${TOTAL:-0} ${TDONE:-0}"
|
||||||
echo ${TDONE:-0})
|
LASTREPORT=$(sed -ne '$p' "$REPORT_FILE")
|
||||||
echo $TECHO >> "$REPORT_FILE"
|
LASTDATA=${LASTREPORT#* } # Strip timestamp.
|
||||||
|
if [ "$LASTDATA" = "$NEWDATA" ]; then
|
||||||
|
echo "$LASTREPORT"
|
||||||
|
[ $TODOTXT_VERBOSE -gt 0 ] && echo "TODO: Report file is up-to-date."
|
||||||
|
else
|
||||||
|
NEWREPORT="$(date +%Y-%m-%dT%T) ${NEWDATA}"
|
||||||
|
echo "${NEWREPORT}" >> "$REPORT_FILE"
|
||||||
|
echo "${NEWREPORT}"
|
||||||
[ $TODOTXT_VERBOSE -gt 0 ] && echo "TODO: Report file updated."
|
[ $TODOTXT_VERBOSE -gt 0 ] && echo "TODO: Report file updated."
|
||||||
cat "$REPORT_FILE"
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
* )
|
* )
|
||||||
|
|||||||
@@ -38,28 +38,20 @@ _todo()
|
|||||||
+*) completions=$(TODOTXT_VERBOSE=0 todo.sh command listproj);;
|
+*) completions=$(TODOTXT_VERBOSE=0 todo.sh command listproj);;
|
||||||
@*) completions=$(TODOTXT_VERBOSE=0 todo.sh command listcon);;
|
@*) completions=$(TODOTXT_VERBOSE=0 todo.sh command listcon);;
|
||||||
*) if [[ "$cur" =~ ^[0-9]+$ ]]; then
|
*) if [[ "$cur" =~ ^[0-9]+$ ]]; then
|
||||||
|
local item=$(TODOTXT_VERBOSE=0 todo.sh -@ -+ -p -x command ls "^ *${cur} " | head -n 1)
|
||||||
|
|
||||||
# Remove the (padded) task number; we prepend the
|
# Remove the (padded) task number; we prepend the
|
||||||
# user-provided $cur instead.
|
# user-provided $cur.
|
||||||
# Remove the timestamp prepended by the -t option,
|
item=${item#* }
|
||||||
# and the done date (for done tasks); there's no
|
|
||||||
# todo.txt option for that yet.
|
# Remove the timestamp prepended by the -t option;
|
||||||
# But keep priority and "x"; they're short and may
|
# there's no todo.txt option for that yet.
|
||||||
# provide useful context.
|
item=${item#[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] }
|
||||||
# Remove any trailing whitespace; the Bash
|
|
||||||
# completion inserts a trailing space itself.
|
|
||||||
# Finally, limit the output to a single line just as
|
|
||||||
# a safety check of the ls action output.
|
|
||||||
local todo=$( \
|
|
||||||
TODOTXT_VERBOSE=0 todo.sh -@ -+ -p -x command ls "^ *${cur} " | \
|
|
||||||
sed -e 's/^ *[0-9]\+ //' -e 's/\((.) \)[0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\} /\1/' \
|
|
||||||
-e 's/\([xX] \)\([0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\} \)\{1,2\}/\1/' \
|
|
||||||
-e 's/[[:space:]]*$//' \
|
|
||||||
-e '1q' \
|
|
||||||
)
|
|
||||||
# Append task text as a shell comment. This
|
# Append task text as a shell comment. This
|
||||||
# completion can be a safety check before a
|
# completion can be a safety check before a
|
||||||
# destructive todo.txt operation.
|
# destructive todo.txt operation.
|
||||||
[ "$todo" ] && COMPREPLY[0]="$cur # $todo"
|
[ "$item" ] && COMPREPLY[0]="$cur # $item"
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
Reference in New Issue
Block a user