Compare commits
1 Commits
archive/cl
...
archive/de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ddd3e9711b |
@@ -77,37 +77,4 @@ TODO: 5 added.
|
|||||||
TODO: 5 of 5 tasks shown
|
TODO: 5 of 5 tasks shown
|
||||||
EOF
|
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
|
test_done
|
||||||
|
|||||||
@@ -45,12 +45,6 @@ grow some corn
|
|||||||
thrash some hay
|
thrash some hay
|
||||||
chase the chickens
|
chase the chickens
|
||||||
EOF
|
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
|
test_todo_session 'replace in multi-item file' <<EOF
|
||||||
>>> todo.sh replace 1 smell the cheese
|
>>> todo.sh replace 1 smell the cheese
|
||||||
1 smell the cows
|
1 smell the cows
|
||||||
@@ -68,59 +62,33 @@ TODO: Replaced task with:
|
|||||||
4 collect the eggs
|
4 collect the eggs
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo '(A) collect the eggs' > todo.txt
|
|
||||||
test_todo_session 'replace with priority' <<EOF
|
test_todo_session 'replace with priority' <<EOF
|
||||||
>>> todo.sh replace 1 "collect the bread"
|
>>> todo.sh pri 4 a
|
||||||
1 (A) collect the eggs
|
4 (A) collect the eggs
|
||||||
TODO: Replaced task with:
|
TODO: 4 prioritized (A).
|
||||||
1 (A) collect the bread
|
|
||||||
|
|
||||||
>>> todo.sh replace 1 collect the eggs
|
>>> todo.sh replace 4 "collect the bread"
|
||||||
1 (A) collect the bread
|
4 (A) collect the eggs
|
||||||
TODO: Replaced task with:
|
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
|
EOF
|
||||||
|
|
||||||
echo 'jump on hay' > todo.txt
|
|
||||||
test_todo_session 'replace with &' << EOF
|
test_todo_session 'replace with &' << EOF
|
||||||
>>> todo.sh replace 1 "thrash the hay & thrash the wheat"
|
>>> todo.sh replace 3 "thrash the hay & thresh the wheat"
|
||||||
1 jump on hay
|
3 jump on hay
|
||||||
TODO: Replaced task with:
|
TODO: Replaced task with:
|
||||||
1 thrash the hay & thrash the wheat
|
3 thrash the hay & thresh the wheat
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo 'jump on hay' > todo.txt
|
test_todo_session 'replace error' << EOF
|
||||||
test_todo_session 'replace with spaces' <<EOF
|
>>> todo.sh replace 10 "hej!"
|
||||||
>>> todo.sh replace 1 "notice the three spaces"
|
=== 1
|
||||||
1 jump on hay
|
TODO: No task 10.
|
||||||
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
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat /dev/null > todo.txt
|
cat /dev/null > todo.txt
|
||||||
@@ -156,7 +124,6 @@ TODO: Replaced task with:
|
|||||||
1 (A) 2009-02-13 this is just a new one
|
1 (A) 2009-02-13 this is just a new one
|
||||||
EOF
|
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
|
test_todo_session 'replace with prepended date replaces existing date' <<EOF
|
||||||
>>> todo.sh replace 1 2010-07-04 this also has a new date
|
>>> todo.sh replace 1 2010-07-04 this also has a new date
|
||||||
1 (A) 2009-02-13 this is just a new one
|
1 (A) 2009-02-13 this is just a new one
|
||||||
|
|||||||
@@ -57,34 +57,6 @@ test_todo_session 'prepend with &' <<EOF
|
|||||||
3 no running & jumping now stop
|
3 no running & jumping now stop
|
||||||
EOF
|
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
|
cat /dev/null > todo.txt
|
||||||
test_todo_session 'prepend handling prepended date on add' <<EOF
|
test_todo_session 'prepend handling prepended date on add' <<EOF
|
||||||
>>> todo.sh -t add "new task"
|
>>> todo.sh -t add "new task"
|
||||||
|
|||||||
@@ -17,12 +17,6 @@ test_todo_session 'append usage' <<EOF
|
|||||||
usage: todo.sh append ITEM# "TEXT TO APPEND"
|
usage: todo.sh append ITEM# "TEXT TO APPEND"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
test_todo_session 'append error' << EOF
|
|
||||||
>>> todo.sh append 10 "hej!"
|
|
||||||
=== 1
|
|
||||||
TODO: No task 10.
|
|
||||||
EOF
|
|
||||||
|
|
||||||
test_todo_session 'basic append' <<EOF
|
test_todo_session 'basic append' <<EOF
|
||||||
>>> todo.sh append 1 "smell the roses"
|
>>> todo.sh append 1 "smell the roses"
|
||||||
1 notice the daisies 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
|
TODO: 1 of 1 tasks shown
|
||||||
EOF
|
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
|
test_todo_session 'append error' << EOF
|
||||||
smell the cows
|
>>> todo.sh append 10 "hej!"
|
||||||
grow some corn
|
=== 1
|
||||||
thrash some hay
|
TODO: No task 10.
|
||||||
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
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
cat > todo.txt <<EOF
|
cat > todo.txt <<EOF
|
||||||
|
|||||||
@@ -68,4 +68,30 @@ TODO: 2 deprioritized.
|
|||||||
TODO: 3 of 3 tasks shown
|
TODO: 3 of 3 tasks shown
|
||||||
EOF
|
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
|
test_done
|
||||||
|
|||||||
36
todo.sh
36
todo.sh
@@ -1,7 +1,7 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
|
|
||||||
# === HEAVY LIFTING ===
|
# === HEAVY LIFTING ===
|
||||||
shopt -s extglob extquote
|
shopt -s extglob
|
||||||
|
|
||||||
# NOTE: Todo.sh requires the .todo/config configuration file to run.
|
# 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.
|
# Place the .todo/config file in your home directory or use the -d option for a custom location.
|
||||||
@@ -267,17 +267,16 @@ cleanup()
|
|||||||
|
|
||||||
cleaninput()
|
cleaninput()
|
||||||
{
|
{
|
||||||
# Replace CR and LF with space; tasks always comprise a single line.
|
# Cleanup the input
|
||||||
input=${input//$'\r'/ }
|
# Replace newlines with spaces Always
|
||||||
input=${input//$'\n'/ }
|
input=`echo $input | tr -d '\r\n'`
|
||||||
|
|
||||||
if [ "$1" = "for sed" ]; then
|
action_regexp="^\(append\|app\|prepend\|prep\|replace\)$"
|
||||||
# This action uses sed with "|" as the substitution separator, and & as
|
|
||||||
# the matched string; these must be escaped.
|
# Check which action we are being used in as this affects what cleaning we do
|
||||||
# Backslashes must be escaped, too, and before the other stuff.
|
if [ `echo $action | grep -c $action_regexp` -eq 1 ]; then
|
||||||
input=${input//\\/\\\\}
|
# These actions use sed and & as the matched string so escape it
|
||||||
input=${input//|/\\|}
|
input=`echo $input | sed 's/\&/\\\&/g'`
|
||||||
input=${input//&/\\&}
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -322,7 +321,7 @@ replaceOrPrepend()
|
|||||||
else
|
else
|
||||||
input=$*
|
input=$*
|
||||||
fi
|
fi
|
||||||
cleaninput "for sed"
|
cleaninput $input
|
||||||
|
|
||||||
# Retrieve existing priority and prepended date
|
# Retrieve existing priority and prepended date
|
||||||
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")
|
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")
|
||||||
@@ -616,7 +615,7 @@ fi
|
|||||||
_addto() {
|
_addto() {
|
||||||
file="$1"
|
file="$1"
|
||||||
input="$2"
|
input="$2"
|
||||||
cleaninput
|
cleaninput $input
|
||||||
|
|
||||||
if [[ $TODOTXT_DATE_ON_ADD = 1 ]]; then
|
if [[ $TODOTXT_DATE_ON_ADD = 1 ]]; then
|
||||||
now=`date '+%Y-%m-%d'`
|
now=`date '+%Y-%m-%d'`
|
||||||
@@ -751,7 +750,7 @@ _list() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
export -f cleaninput _list die
|
export -f _list die
|
||||||
|
|
||||||
# == HANDLE ACTION ==
|
# == HANDLE ACTION ==
|
||||||
action=$( printf "%s\n" "$ACTION" | tr 'A-Z' 'a-z' )
|
action=$( printf "%s\n" "$ACTION" | tr 'A-Z' 'a-z' )
|
||||||
@@ -843,7 +842,7 @@ case $action in
|
|||||||
[$SENTENCE_DELIMITERS]*) appendspace=;;
|
[$SENTENCE_DELIMITERS]*) appendspace=;;
|
||||||
*) appendspace=" ";;
|
*) appendspace=" ";;
|
||||||
esac
|
esac
|
||||||
cleaninput "for sed"
|
cleaninput $input
|
||||||
|
|
||||||
if sed -i.bak $item" s|^.*|&${appendspace}${input}|" "$TODO_FILE"; then
|
if sed -i.bak $item" s|^.*|&${appendspace}${input}|" "$TODO_FILE"; then
|
||||||
if [ $TODOTXT_VERBOSE -gt 0 ]; then
|
if [ $TODOTXT_VERBOSE -gt 0 ]; then
|
||||||
@@ -922,10 +921,7 @@ case $action in
|
|||||||
todo=$(sed "$item!d" "$TODO_FILE")
|
todo=$(sed "$item!d" "$TODO_FILE")
|
||||||
[ -z "$todo" ] && die "TODO: No task $item."
|
[ -z "$todo" ] && die "TODO: No task $item."
|
||||||
|
|
||||||
sed -e $item"s/^(.) //" "$TODO_FILE" > /dev/null 2>&1
|
if sed "$item!d" "$TODO_FILE" | grep "^(.) " > /dev/null; then
|
||||||
|
|
||||||
if [ "$?" -eq 0 ]; then
|
|
||||||
#it's all good, continue
|
|
||||||
sed -i.bak -e $item"s/^(.) //" "$TODO_FILE"
|
sed -i.bak -e $item"s/^(.) //" "$TODO_FILE"
|
||||||
if [ $TODOTXT_VERBOSE -gt 0 ]; then
|
if [ $TODOTXT_VERBOSE -gt 0 ]; then
|
||||||
NEWTODO=$(sed "$item!d" "$TODO_FILE")
|
NEWTODO=$(sed "$item!d" "$TODO_FILE")
|
||||||
@@ -933,7 +929,7 @@ case $action in
|
|||||||
echo "TODO: $item deprioritized."
|
echo "TODO: $item deprioritized."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
die "$errmsg"
|
echo "TODO: $item is not prioritized."
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
|
|||||||
Reference in New Issue
Block a user