From 092e83404f06b7ccd41c870655b599733ff3e770 Mon Sep 17 00:00:00 2001 From: Paul Mansfield Date: Sat, 27 Jun 2009 12:51:48 +0100 Subject: [PATCH] Bug Fix: prepend not correct on prioritized tasks Check for priority, if one exists, remove, prepend and add back. If priority doesn't exist just runs the normal prepend functionality. --- tests/t1400-prepend.sh | 55 ++++++++++++++++++++++++++++++++++++++++++ todo.sh | 26 ++++++++++++++++---- 2 files changed, 76 insertions(+), 5 deletions(-) create mode 100755 tests/t1400-prepend.sh diff --git a/tests/t1400-prepend.sh b/tests/t1400-prepend.sh new file mode 100755 index 0000000..50610df --- /dev/null +++ b/tests/t1400-prepend.sh @@ -0,0 +1,55 @@ +#!/bin/sh + +test_description='basic prepend functionality +' +. ./test-lib.sh + +test_todo_session 'prepend usage' <>> todo.sh prepend B B +usage: todo.sh prepend ITEM# "TEXT TO PREPEND" +=== 1 +EOF + +cat > todo.txt <>> todo.sh list +1 (B) smell the uppercase Roses +flowers @outside +2 notice the sunflowers +3 stop +-- +TODO: 3 of 3 tasks shown from $HOME/todo.txt + +>>> todo.sh -p list +1 (B) smell the uppercase Roses +flowers @outside +2 notice the sunflowers +3 stop +-- +TODO: 3 of 3 tasks shown from $HOME/todo.txt + +>>> todo.sh prepend 2 test +2: test notice the sunflowers + +>>> todo.sh -p list +1 (B) smell the uppercase Roses +flowers @outside +3 stop +2 test notice the sunflowers +-- +TODO: 3 of 3 tasks shown from $HOME/todo.txt + +>>> todo.sh prepend 1 test +1: (B) test smell the uppercase Roses +flowers @outside + +>>> todo.sh -p list +1 (B) test smell the uppercase Roses +flowers @outside +3 stop +2 test notice the sunflowers +-- +TODO: 3 of 3 tasks shown from $HOME/todo.txt + +EOF + +test_done diff --git a/todo.sh b/todo.sh index 8dfa206..f2ba17b 100755 --- a/todo.sh +++ b/todo.sh @@ -818,13 +818,29 @@ case $action in else input=$* fi + + # Test for then set priority + if [ `sed "$item!d" "$TODO_FILE"|grep -c "^(\\w)"` -eq 1 ]; then + priority=$(sed "$item!d" "$TODO_FILE" | awk -F '\\(|\\)' '{print $2}') + fi - if sed -i.bak $item" s|^.*|$input &|" "$TODO_FILE"; then - newtodo=$(sed "$item!d" "$TODO_FILE") + # If priority isn't set prepend + if [ -z $priority ]; then + if sed -i.bak $item" s|^.*|$input &|" "$TODO_FILE"; then + newtodo=$(sed "$item!d" "$TODO_FILE") [ $TODOTXT_VERBOSE -gt 0 ] && echo "$item: $newtodo" - else - echo "TODO: Error prepending task $item." - fi + else + echo "TODO: Error prepending task $item." + fi + # If priority is set, remove priority, prepend and add back priority + else + if sed -i.bak -e "$item s/^(.) //" -e "$item s|^.*|\($priority\) $1 &|" "$TODO_FILE"; then + newtodo=$(sed "$item!d" "$TODO_FILE") + [ $TODOTXT_VERBOSE -gt 0 ] && echo "$item: $newtodo" + else + echo "TODO: Error prepending task $item." + fi + fi cleanup;; "pri" | "p" )