Compare commits
1 Commits
v2.8.0
...
archive/si
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99dc4dce9f |
@@ -1,16 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='no old-style backtick command substitution
|
||||
|
||||
This test checks the todo.sh script itself for occurrences
|
||||
of old-style backtick command substitution, which should be
|
||||
replaced with $(...).
|
||||
On failure, it will print each offending line number and line.
|
||||
'
|
||||
. ./test-lib.sh
|
||||
|
||||
test_todo_session 'no old-style backtick command substitution' <<EOF
|
||||
>>> sed -n -e 's/\(^\|[ \t]\)#.*//' -e '/\`/{' -e '=;p' -e '}' "$(which todo.sh)"
|
||||
EOF
|
||||
|
||||
test_done
|
||||
@@ -77,37 +77,4 @@ TODO: 5 added.
|
||||
TODO: 5 of 5 tasks shown
|
||||
EOF
|
||||
|
||||
#
|
||||
# Advanced add
|
||||
#
|
||||
|
||||
cat /dev/null > todo.txt
|
||||
test_todo_session 'add with spaces' <<EOF
|
||||
>>> todo.sh add "notice the three spaces"
|
||||
1 notice the three spaces
|
||||
TODO: 1 added.
|
||||
|
||||
>>> todo.sh add notice how the spaces get lost
|
||||
2 notice how the spaces get lost
|
||||
TODO: 2 added.
|
||||
|
||||
>>> todo.sh list
|
||||
2 notice how the spaces get lost
|
||||
1 notice the three spaces
|
||||
--
|
||||
TODO: 2 of 2 tasks shown
|
||||
EOF
|
||||
|
||||
cat /dev/null > todo.txt
|
||||
test_todo_session 'add with CR' <<EOF
|
||||
>>> todo.sh add "smell the
|
||||
Carriage Return"
|
||||
1 smell the Carriage Return
|
||||
TODO: 1 added.
|
||||
|
||||
>>> todo.sh list
|
||||
1 smell the Carriage Return
|
||||
--
|
||||
TODO: 1 of 1 tasks shown
|
||||
EOF
|
||||
test_done
|
||||
|
||||
@@ -21,22 +21,6 @@ TODO: 1 added.
|
||||
TODO: 1 of 1 tasks shown
|
||||
EOF
|
||||
|
||||
test_todo_session 'cmd line first day with priority' <<EOF
|
||||
>>> todo.sh -pt add '(A) notice the daisies'
|
||||
2 (A) 2009-02-13 notice the daisies
|
||||
TODO: 2 added.
|
||||
|
||||
>>> todo.sh -p list
|
||||
2 (A) 2009-02-13 notice the daisies
|
||||
1 2009-02-13 notice the daisies
|
||||
--
|
||||
TODO: 2 of 2 tasks shown
|
||||
|
||||
>>> todo.sh -npf del 2
|
||||
2 (A) 2009-02-13 notice the daisies
|
||||
TODO: 2 deleted.
|
||||
EOF
|
||||
|
||||
test_tick
|
||||
|
||||
test_todo_session 'cmd line second day' <<EOF
|
||||
|
||||
@@ -45,12 +45,6 @@ grow some corn
|
||||
thrash some hay
|
||||
chase the chickens
|
||||
EOF
|
||||
test_todo_session 'replace error' << EOF
|
||||
>>> todo.sh replace 10 "hej!"
|
||||
=== 1
|
||||
TODO: No task 10.
|
||||
EOF
|
||||
|
||||
test_todo_session 'replace in multi-item file' <<EOF
|
||||
>>> todo.sh replace 1 smell the cheese
|
||||
1 smell the cows
|
||||
@@ -68,59 +62,33 @@ TODO: Replaced task with:
|
||||
4 collect the eggs
|
||||
EOF
|
||||
|
||||
echo '(A) collect the eggs' > todo.txt
|
||||
test_todo_session 'replace with priority' <<EOF
|
||||
>>> todo.sh replace 1 "collect the bread"
|
||||
1 (A) collect the eggs
|
||||
TODO: Replaced task with:
|
||||
1 (A) collect the bread
|
||||
>>> todo.sh pri 4 a
|
||||
4 (A) collect the eggs
|
||||
TODO: 4 prioritized (A).
|
||||
|
||||
>>> todo.sh replace 1 collect the eggs
|
||||
1 (A) collect the bread
|
||||
>>> todo.sh replace 4 "collect the bread"
|
||||
4 (A) collect the eggs
|
||||
TODO: Replaced task with:
|
||||
1 (A) collect the eggs
|
||||
4 (A) collect the bread
|
||||
|
||||
>>> todo.sh replace 4 collect the eggs
|
||||
4 (A) collect the bread
|
||||
TODO: Replaced task with:
|
||||
4 (A) collect the eggs
|
||||
EOF
|
||||
|
||||
echo 'jump on hay' > todo.txt
|
||||
test_todo_session 'replace with &' << EOF
|
||||
>>> todo.sh replace 1 "thrash the hay & thrash the wheat"
|
||||
1 jump on hay
|
||||
>>> todo.sh replace 3 "thrash the hay & thresh the wheat"
|
||||
3 jump on hay
|
||||
TODO: Replaced task with:
|
||||
1 thrash the hay & thrash the wheat
|
||||
3 thrash the hay & thresh the wheat
|
||||
EOF
|
||||
|
||||
echo 'jump on hay' > todo.txt
|
||||
test_todo_session 'replace with spaces' <<EOF
|
||||
>>> todo.sh replace 1 "notice the three spaces"
|
||||
1 jump on hay
|
||||
TODO: Replaced task with:
|
||||
1 notice the three spaces
|
||||
EOF
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
smell the cows
|
||||
grow some corn
|
||||
thrash some hay
|
||||
chase the chickens
|
||||
EOF
|
||||
test_todo_session 'replace with symbols' <<EOF
|
||||
>>> todo.sh replace 1 "~@#$%^&*()-_=+[{]}|;:',<.>/?"
|
||||
1 smell the cows
|
||||
TODO: Replaced task with:
|
||||
1 ~@#$%^&*()-_=+[{]}|;:',<.>/?
|
||||
|
||||
>>> todo.sh replace 2 '\`!\\"'
|
||||
2 grow some corn
|
||||
TODO: Replaced task with:
|
||||
2 \`!\\"
|
||||
|
||||
>>> todo.sh list
|
||||
4 chase the chickens
|
||||
3 thrash some hay
|
||||
2 \`!\\"
|
||||
1 ~@#$%^&*()-_=+[{]}|;:',<.>/?
|
||||
--
|
||||
TODO: 4 of 4 tasks shown
|
||||
test_todo_session 'replace error' << EOF
|
||||
>>> todo.sh replace 10 "hej!"
|
||||
=== 1
|
||||
TODO: No task 10.
|
||||
EOF
|
||||
|
||||
cat /dev/null > todo.txt
|
||||
@@ -156,7 +124,6 @@ TODO: Replaced task with:
|
||||
1 (A) 2009-02-13 this is just a new one
|
||||
EOF
|
||||
|
||||
echo '(A) 2009-02-13 this is just a new one' > todo.txt
|
||||
test_todo_session 'replace with prepended date replaces existing date' <<EOF
|
||||
>>> todo.sh replace 1 2010-07-04 this also has a new date
|
||||
1 (A) 2009-02-13 this is just a new one
|
||||
|
||||
@@ -53,28 +53,9 @@ TODO: 2 prioritized (C).
|
||||
--
|
||||
TODO: 3 of 3 tasks shown
|
||||
|
||||
>>> todo.sh add "smell the coffee +wakeup"
|
||||
4 smell the coffee +wakeup
|
||||
TODO: 4 added.
|
||||
|
||||
>>> todo.sh -p list
|
||||
1 (B) smell the uppercase Roses +flowers @outside
|
||||
2 (C) notice the sunflowers
|
||||
4 smell the coffee +wakeup
|
||||
3 stop
|
||||
--
|
||||
TODO: 4 of 4 tasks shown
|
||||
EOF
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
(B) smell the uppercase Roses +flowers @outside
|
||||
(C) notice the sunflowers
|
||||
stop
|
||||
EOF
|
||||
test_todo_session 'reprioritize' <<EOF
|
||||
>>> todo.sh pri 2 A
|
||||
2 (A) notice the sunflowers
|
||||
TODO: 2 re-prioritized from (C) to (A).
|
||||
TODO: 2 prioritized (A).
|
||||
|
||||
>>> todo.sh -p list
|
||||
2 (A) notice the sunflowers
|
||||
@@ -85,13 +66,25 @@ TODO: 3 of 3 tasks shown
|
||||
|
||||
>>> todo.sh pri 2 a
|
||||
2 (A) notice the sunflowers
|
||||
TODO: 2 already prioritized (A).
|
||||
TODO: 2 prioritized (A).
|
||||
|
||||
>>> todo.sh -p listpri
|
||||
2 (A) notice the sunflowers
|
||||
1 (B) smell the uppercase Roses +flowers @outside
|
||||
--
|
||||
TODO: 2 of 3 tasks shown
|
||||
|
||||
>>> todo.sh add "smell the coffee +wakeup"
|
||||
4 smell the coffee +wakeup
|
||||
TODO: 4 added.
|
||||
|
||||
>>> todo.sh -p list
|
||||
2 (A) notice the sunflowers
|
||||
1 (B) smell the uppercase Roses +flowers @outside
|
||||
4 smell the coffee +wakeup
|
||||
3 stop
|
||||
--
|
||||
TODO: 3 of 3 tasks shown
|
||||
TODO: 4 of 4 tasks shown
|
||||
EOF
|
||||
|
||||
test_done
|
||||
|
||||
@@ -1,95 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='list priority functionality
|
||||
'
|
||||
. ./test-lib.sh
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
(B) smell the uppercase Roses +flowers @outside
|
||||
(C) notice the sunflowers
|
||||
stop
|
||||
EOF
|
||||
test_todo_session 'basic listpri' <<EOF
|
||||
>>> todo.sh listpri A
|
||||
--
|
||||
TODO: 0 of 3 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri c
|
||||
2 (C) notice the sunflowers
|
||||
--
|
||||
TODO: 1 of 3 tasks shown
|
||||
EOF
|
||||
|
||||
test_todo_session 'listpri highlighting' <<EOF
|
||||
>>> todo.sh listpri
|
||||
[0;32m1 (B) smell the uppercase Roses +flowers @outside[0m
|
||||
[1;34m2 (C) notice the sunflowers[0m
|
||||
--
|
||||
TODO: 2 of 3 tasks shown
|
||||
EOF
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
(B) smell the uppercase Roses +flowers @outside
|
||||
(C) notice the sunflowers
|
||||
(m)others will notice this
|
||||
(n) not a prioritized task
|
||||
notice the (C)opyright
|
||||
EOF
|
||||
test_todo_session 'listpri filtering priorities' <<EOF
|
||||
>>> todo.sh -p listpri
|
||||
1 (B) smell the uppercase Roses +flowers @outside
|
||||
2 (C) notice the sunflowers
|
||||
--
|
||||
TODO: 2 of 5 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri b
|
||||
1 (B) smell the uppercase Roses +flowers @outside
|
||||
--
|
||||
TODO: 1 of 5 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri c
|
||||
2 (C) notice the sunflowers
|
||||
--
|
||||
TODO: 1 of 5 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri m
|
||||
--
|
||||
TODO: 0 of 5 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri n
|
||||
--
|
||||
TODO: 0 of 5 tasks shown
|
||||
EOF
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
(B) ccc xxx this line should be third.
|
||||
ccc xxx this line should be third.
|
||||
(A) aaa zzz this line should be first.
|
||||
aaa zzz this line should be first.
|
||||
(B) bbb yyy this line should be second.
|
||||
bbb yyy this line should be second.
|
||||
EOF
|
||||
test_todo_session 'listpri filtering of TERM' <<EOF
|
||||
>>> todo.sh -p listpri "should be"
|
||||
3 (A) aaa zzz this line should be first.
|
||||
5 (B) bbb yyy this line should be second.
|
||||
1 (B) ccc xxx this line should be third.
|
||||
--
|
||||
TODO: 3 of 6 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri a "should be"
|
||||
3 (A) aaa zzz this line should be first.
|
||||
--
|
||||
TODO: 1 of 6 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri b second
|
||||
5 (B) bbb yyy this line should be second.
|
||||
--
|
||||
TODO: 1 of 6 tasks shown
|
||||
|
||||
>>> todo.sh -p listpri x "should be"
|
||||
--
|
||||
TODO: 0 of 6 tasks shown
|
||||
EOF
|
||||
|
||||
test_done
|
||||
@@ -57,34 +57,6 @@ test_todo_session 'prepend with &' <<EOF
|
||||
3 no running & jumping now stop
|
||||
EOF
|
||||
|
||||
echo 'jump on hay' > todo.txt
|
||||
test_todo_session 'prepend with spaces' <<EOF
|
||||
>>> todo.sh prepend 1 "notice the three spaces and"
|
||||
1 notice the three spaces and jump on hay
|
||||
EOF
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
smell the cows
|
||||
grow some corn
|
||||
thrash some hay
|
||||
chase the chickens
|
||||
EOF
|
||||
test_todo_session 'prepend with symbols' <<EOF
|
||||
>>> todo.sh prepend 1 "~@#$%^&*()-_=+[{]}|;:',<.>/?"
|
||||
1 ~@#$%^&*()-_=+[{]}|;:',<.>/? smell the cows
|
||||
|
||||
>>> todo.sh prepend 2 '\`!\\"'
|
||||
2 \`!\\" grow some corn
|
||||
|
||||
>>> todo.sh list
|
||||
4 chase the chickens
|
||||
3 thrash some hay
|
||||
2 \`!\\" grow some corn
|
||||
1 ~@#$%^&*()-_=+[{]}|;:',<.>/? smell the cows
|
||||
--
|
||||
TODO: 4 of 4 tasks shown
|
||||
EOF
|
||||
|
||||
cat /dev/null > todo.txt
|
||||
test_todo_session 'prepend handling prepended date on add' <<EOF
|
||||
>>> todo.sh -t add "new task"
|
||||
|
||||
@@ -81,6 +81,6 @@ test_todo_session 'fail multiple do attempts' <<EOF
|
||||
TODO: 3 marked as done.
|
||||
|
||||
>>> todo.sh -a do 3
|
||||
TODO: 3 is already marked done.
|
||||
3 is already marked done
|
||||
EOF
|
||||
test_done
|
||||
|
||||
@@ -17,12 +17,6 @@ test_todo_session 'append usage' <<EOF
|
||||
usage: todo.sh append ITEM# "TEXT TO APPEND"
|
||||
EOF
|
||||
|
||||
test_todo_session 'append error' << EOF
|
||||
>>> todo.sh append 10 "hej!"
|
||||
=== 1
|
||||
TODO: No task 10.
|
||||
EOF
|
||||
|
||||
test_todo_session 'basic append' <<EOF
|
||||
>>> todo.sh append 1 "smell the roses"
|
||||
1 notice the daisies smell the roses
|
||||
@@ -43,32 +37,11 @@ test_todo_session 'basic append with &' <<EOF
|
||||
TODO: 1 of 1 tasks shown
|
||||
EOF
|
||||
|
||||
echo 'jump on hay' > todo.txt
|
||||
test_todo_session 'append with spaces' <<EOF
|
||||
>>> todo.sh append 1 "and notice the three spaces"
|
||||
1 jump on hay and notice the three spaces
|
||||
EOF
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
smell the cows
|
||||
grow some corn
|
||||
thrash some hay
|
||||
chase the chickens
|
||||
EOF
|
||||
test_todo_session 'append with symbols' <<EOF
|
||||
>>> todo.sh append 1 "~@#$%^&*()-_=+[{]}|;:',<.>/?"
|
||||
1 smell the cows ~@#$%^&*()-_=+[{]}|;:',<.>/?
|
||||
|
||||
>>> todo.sh append 2 '\`!\\"'
|
||||
2 grow some corn \`!\\"
|
||||
|
||||
>>> todo.sh list
|
||||
4 chase the chickens
|
||||
2 grow some corn \`!\\"
|
||||
1 smell the cows ~@#$%^&*()-_=+[{]}|;:',<.>/?
|
||||
3 thrash some hay
|
||||
--
|
||||
TODO: 4 of 4 tasks shown
|
||||
test_todo_session 'append error' << EOF
|
||||
>>> todo.sh append 10 "hej!"
|
||||
=== 1
|
||||
TODO: No task 10.
|
||||
EOF
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
|
||||
@@ -68,30 +68,4 @@ TODO: 2 deprioritized.
|
||||
TODO: 3 of 3 tasks shown
|
||||
EOF
|
||||
|
||||
cat > todo.txt <<EOF
|
||||
(B) smell the uppercase Roses +flowers @outside
|
||||
(A) notice the sunflowers
|
||||
stop
|
||||
EOF
|
||||
test_todo_session 'depriority of unprioritized task' <<EOF
|
||||
>>> todo.sh -p list
|
||||
2 (A) notice the sunflowers
|
||||
1 (B) smell the uppercase Roses +flowers @outside
|
||||
3 stop
|
||||
--
|
||||
TODO: 3 of 3 tasks shown
|
||||
|
||||
>>> todo.sh depri 3 2
|
||||
TODO: 3 is not prioritized.
|
||||
2 notice the sunflowers
|
||||
TODO: 2 deprioritized.
|
||||
|
||||
>>> todo.sh -p list
|
||||
1 (B) smell the uppercase Roses +flowers @outside
|
||||
2 notice the sunflowers
|
||||
3 stop
|
||||
--
|
||||
TODO: 3 of 3 tasks shown
|
||||
EOF
|
||||
|
||||
test_done
|
||||
|
||||
107
todo.sh
107
todo.sh
@@ -1,7 +1,7 @@
|
||||
#! /bin/bash
|
||||
|
||||
# === HEAVY LIFTING ===
|
||||
shopt -s extglob extquote
|
||||
shopt -s extglob
|
||||
|
||||
# NOTE: Todo.sh requires the .todo/config configuration file to run.
|
||||
# Place the .todo/config file in your home directory or use the -d option for a custom location.
|
||||
@@ -58,7 +58,7 @@ shorthelp()
|
||||
listall|lsa [TERM...]
|
||||
listcon|lsc
|
||||
listfile|lf SRC [TERM...]
|
||||
listpri|lsp [PRIORITY] [TERM...]
|
||||
listpri|lsp [PRIORITY]
|
||||
listproj|lsprj
|
||||
move|mv ITEM# DEST [SRC]
|
||||
prepend|prep ITEM# "TEXT TO PREPEND"
|
||||
@@ -143,11 +143,10 @@ help()
|
||||
sorted by priority with line numbers. If TERM specified, lists
|
||||
all lines that contain TERM in SRC file.
|
||||
|
||||
listpri [PRIORITY] [TERM...]
|
||||
lsp [PRIORITY] [TERM...]
|
||||
listpri [PRIORITY]
|
||||
lsp [PRIORITY]
|
||||
Displays all tasks prioritized PRIORITY.
|
||||
If no PRIORITY specified, lists all prioritized tasks.
|
||||
If TERM specified, lists only prioritized tasks that contain TERM.
|
||||
|
||||
listproj
|
||||
lsprj
|
||||
@@ -268,17 +267,16 @@ cleanup()
|
||||
|
||||
cleaninput()
|
||||
{
|
||||
# Replace CR and LF with space; tasks always comprise a single line.
|
||||
input=${input//$'\r'/ }
|
||||
input=${input//$'\n'/ }
|
||||
# Cleanup the input
|
||||
# Replace newlines with spaces Always
|
||||
input=`echo $input | tr -d '\r\n'`
|
||||
|
||||
if [ "$1" = "for sed" ]; then
|
||||
# This action uses sed with "|" as the substitution separator, and & as
|
||||
# the matched string; these must be escaped.
|
||||
# Backslashes must be escaped, too, and before the other stuff.
|
||||
input=${input//\\/\\\\}
|
||||
input=${input//|/\\|}
|
||||
input=${input//&/\\&}
|
||||
action_regexp="^\(append\|app\|prepend\|prep\|replace\)$"
|
||||
|
||||
# Check which action we are being used in as this affects what cleaning we do
|
||||
if [ `echo $action | grep -c $action_regexp` -eq 1 ]; then
|
||||
# These actions use sed and & as the matched string so escape it
|
||||
input=`echo $input | sed 's/\&/\\\&/g'`
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -323,11 +321,11 @@ replaceOrPrepend()
|
||||
else
|
||||
input=$*
|
||||
fi
|
||||
cleaninput "for sed"
|
||||
cleaninput $input
|
||||
|
||||
# Retrieve existing priority and prepended date
|
||||
priority=$(sed -e "$item!d" -e $item's/^\((.) \)\{0,1\}\([0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\} \)\{0,1\}.*/\1/' "$TODO_FILE")
|
||||
prepdate=$(sed -e "$item!d" -e $item's/^\((.) \)\{0,1\}\([0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\} \)\{0,1\}.*/\2/' "$TODO_FILE")
|
||||
priority=$(sed -e "$item!d" -e $item's/^\(([A-Z]) \)\{0,1\}\([0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\} \)\{0,1\}.*/\1/' "$TODO_FILE")
|
||||
prepdate=$(sed -e "$item!d" -e $item's/^\(([A-Z]) \)\{0,1\}\([0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\} \)\{0,1\}.*/\2/' "$TODO_FILE")
|
||||
|
||||
if [ "$prepdate" -a "$action" = "replace" ] && [ "$(echo "$input"|sed -e 's/^\([0-9]\{2,4\}-[0-9]\{2\}-[0-9]\{2\}\)\{0,1\}.*/\1/')" ]; then
|
||||
# If the replaced text starts with a date, it will replace the existing
|
||||
@@ -533,7 +531,7 @@ export SENTENCE_DELIMITERS=',.:;'
|
||||
}
|
||||
|
||||
[ -e "$TODOTXT_CFG_FILE" ] || {
|
||||
CFG_FILE_ALT=$(dirname "$0")"/todo.cfg"
|
||||
CFG_FILE_ALT=`dirname "$0"`"/todo.cfg"
|
||||
|
||||
if [ -e "$CFG_FILE_ALT" ]
|
||||
then
|
||||
@@ -617,11 +615,11 @@ fi
|
||||
_addto() {
|
||||
file="$1"
|
||||
input="$2"
|
||||
cleaninput
|
||||
cleaninput $input
|
||||
|
||||
if [[ $TODOTXT_DATE_ON_ADD = 1 ]]; then
|
||||
now=$(date '+%Y-%m-%d')
|
||||
input=$(echo "$input" | sed -e 's/^\(([A-Z]) \)\{0,1\}/\1'"$now /")
|
||||
now=`date '+%Y-%m-%d'`
|
||||
input="$now $input"
|
||||
fi
|
||||
echo "$input" >> "$file"
|
||||
if [ $TODOTXT_VERBOSE -gt 0 ]; then
|
||||
@@ -752,7 +750,7 @@ _list() {
|
||||
fi
|
||||
}
|
||||
|
||||
export -f cleaninput _list die
|
||||
export -f _list die
|
||||
|
||||
# == HANDLE ACTION ==
|
||||
action=$( printf "%s\n" "$ACTION" | tr 'A-Z' 'a-z' )
|
||||
@@ -844,7 +842,7 @@ case $action in
|
||||
[$SENTENCE_DELIMITERS]*) appendspace=;;
|
||||
*) appendspace=" ";;
|
||||
esac
|
||||
cleaninput "for sed"
|
||||
cleaninput $input
|
||||
|
||||
if sed -i.bak $item" s|^.*|&${appendspace}${input}|" "$TODO_FILE"; then
|
||||
if [ $TODOTXT_VERBOSE -gt 0 ]; then
|
||||
@@ -918,12 +916,15 @@ case $action in
|
||||
|
||||
# Split multiple depri's, if comma separated change to whitespace separated
|
||||
# Loop the 'depri' function for each item
|
||||
for item in $(echo $* | tr ',' ' '); do
|
||||
for item in `echo $* | tr ',' ' '`; do
|
||||
[[ "$item" = +([0-9]) ]] || die "$errmsg"
|
||||
todo=$(sed "$item!d" "$TODO_FILE")
|
||||
[ -z "$todo" ] && die "TODO: No task $item."
|
||||
|
||||
if [[ "$todo" = \(?\)\ * ]]; then
|
||||
sed -e $item"s/^(.) //" "$TODO_FILE" > /dev/null 2>&1
|
||||
|
||||
if [ "$?" -eq 0 ]; then
|
||||
#it's all good, continue
|
||||
sed -i.bak -e $item"s/^(.) //" "$TODO_FILE"
|
||||
if [ $TODOTXT_VERBOSE -gt 0 ]; then
|
||||
NEWTODO=$(sed "$item!d" "$TODO_FILE")
|
||||
@@ -931,7 +932,7 @@ case $action in
|
||||
echo "TODO: $item deprioritized."
|
||||
fi
|
||||
else
|
||||
echo "TODO: $item is not prioritized."
|
||||
die "$errmsg"
|
||||
fi
|
||||
done
|
||||
;;
|
||||
@@ -944,7 +945,7 @@ case $action in
|
||||
|
||||
# Split multiple do's, if comma separated change to whitespace separated
|
||||
# Loop the 'do' function for each item
|
||||
for item in $(echo $* | tr ',' ' '); do
|
||||
for item in `echo $* | tr ',' ' '`; do
|
||||
[ -z "$item" ] && die "$errmsg"
|
||||
[[ "$item" = +([0-9]) ]] || die "$errmsg"
|
||||
|
||||
@@ -953,7 +954,7 @@ case $action in
|
||||
|
||||
# Check if this item has already been done
|
||||
if [ "${todo:0:2}" != "x " ]; then
|
||||
now=$(date '+%Y-%m-%d')
|
||||
now=`date '+%Y-%m-%d'`
|
||||
# remove priority once item is done
|
||||
sed -i.bak $item"s/^(.) //" "$TODO_FILE"
|
||||
sed -i.bak $item"s|^|x $now |" "$TODO_FILE"
|
||||
@@ -963,7 +964,7 @@ case $action in
|
||||
echo "TODO: $item marked as done."
|
||||
fi
|
||||
else
|
||||
echo "TODO: $item is already marked done."
|
||||
echo "$item is already marked done"
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -1011,11 +1012,22 @@ case $action in
|
||||
;;
|
||||
|
||||
"listpri" | "lsp" )
|
||||
shift ## was "listpri", new $1 is priority to list or first TERM
|
||||
shift ## was "listpri", new $1 is priority to list
|
||||
|
||||
pri=$(printf "%s\n" "$1" | tr 'a-z' 'A-Z' | grep '^[A-Z]$') && shift || pri="[A-Z]"
|
||||
post_filter_command="grep '^ *[0-9]\+ (${pri}) '"
|
||||
_list "$TODO_FILE" "$@"
|
||||
if [ "${1:-}" ]
|
||||
then
|
||||
## A priority was specified
|
||||
pri=$( printf "%s\n" "$1" | tr 'a-z' 'A-Z' | grep '^[A-Z]$' ) || {
|
||||
die "usage: $TODO_SH listpri PRIORITY
|
||||
note: PRIORITY must a single letter from A to Z."
|
||||
}
|
||||
else
|
||||
## No priority specified; show all priority tasks
|
||||
pri="[[:upper:]]"
|
||||
fi
|
||||
pri="($pri)"
|
||||
|
||||
_list "$TODO_FILE" "$pri"
|
||||
;;
|
||||
|
||||
"move" | "mv" )
|
||||
@@ -1077,23 +1089,18 @@ note: PRIORITY must be anywhere from A to Z."
|
||||
[[ "$item" = +([0-9]) ]] || die "$errmsg"
|
||||
[[ "$newpri" = @([A-Z]) ]] || die "$errmsg"
|
||||
|
||||
oldpri=$(sed -ne $item's/^(\(.\)) .*/\1/p' "$TODO_FILE")
|
||||
if [ "$oldpri" != "$newpri" ]; then
|
||||
sed -e $item"s/^(.) //" -e $item"s/^/($newpri) /" "$TODO_FILE" > /dev/null 2>&1
|
||||
|
||||
if [ "$?" -eq 0 ]; then
|
||||
#it's all good, continue
|
||||
sed -i.bak -e $item"s/^(.) //" -e $item"s/^/($newpri) /" "$TODO_FILE"
|
||||
fi
|
||||
if [ $TODOTXT_VERBOSE -gt 0 ]; then
|
||||
NEWTODO=$(sed "$item!d" "$TODO_FILE")
|
||||
echo "$item $NEWTODO"
|
||||
if [ "$oldpri" != "$newpri" ]; then
|
||||
if [ "$oldpri" ]; then
|
||||
echo "TODO: $item re-prioritized from ($oldpri) to ($newpri)."
|
||||
else
|
||||
echo "TODO: $item prioritized ($newpri)."
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ "$oldpri" = "$newpri" ]; then
|
||||
echo "TODO: $item already prioritized ($newpri)."
|
||||
if [ $TODOTXT_VERBOSE -gt 0 ]; then
|
||||
NEWTODO=$(sed "$item!d" "$TODO_FILE")
|
||||
echo "$item $NEWTODO"
|
||||
echo "TODO: $item prioritized ($newpri)."
|
||||
fi
|
||||
else
|
||||
die "$errmsg"
|
||||
fi
|
||||
;;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user