Compare commits

...

14 Commits
v2.5 ... v2.6

Author SHA1 Message Date
Yujie Wu
2a65615c7a Added a case for the fixed replace command. 2010-05-08 08:52:59 +08:00
Yujie Wu
d7e194b09d Fixed bug for replace command. 2010-05-08 08:52:59 +08:00
Jared Cordasco
a4ab8a808a Tab fixes. 2010-04-16 06:12:00 +08:00
Gina Trapani
e395ac78d8 Fix line endings 2010-03-26 12:55:55 -07:00
Paul Mansfield
6fc2d81919 Bugfix: Old versions of bash do not have =~
Versions of bash before 3.0 do not have =~ syntax to match on a regex.
Changed to using a simple grep -c test instead.
Fixes issues with osx and Solaris 9 and before.
2010-02-23 23:05:03 +00:00
Jared Cordasco
b6467eaa64 Updated _list() output to match updated addto. Adjusted tests to match.
- _list() now shows the capitalized filename in place of 'TODO:'.
  For example, listing garden.txt produces a output prefixed by 'GARDEN:'
  This eliminates the ' from $FILE' part of the _list() output. All tests
  were adjusted to match this new output.
2010-01-12 14:42:02 -05:00
Jared Cordasco
2d3820394a Refactored various add functionality to one function. Added tests.
- 'add' and 'addm' now 'addto' with $TODO_FILE instead of user supplied file

- 'addto' now shows the capitalized filename in place of 'TODO:'.
  For example, adding to garden.txt produces a output prefixed by 'GARDEN:'
  (Probably the most controversial part of this commit and up for
  discussion. If kept, the 'listfile' output should be made to match.
  Note that this convention would then minimize standard output by
  dropping the file name.)

- All existing add/addm/add-date tests pass. Two new test sequences were
  added to test 'addto' and 'listfile' functionality.

- A space/tab nuissance was cleared up in the tests/README file.
2010-01-10 01:16:11 -05:00
Jared Cordasco
394c4c748a Correctly fixed regexp quoting issue for bash v3.1.x and v3.2.x.
See: http://stackoverflow.com/questions/218156/bash-regex-with-quotes
2010-01-06 21:05:22 -05:00
Jared Cordasco
4c76f04a82 Merge branch 'master' into personal_opts (w/ spacing corrections) 2010-01-05 23:26:08 -06:00
Jared Cordasco
2bb14eb9bc Consolidated TODOTXT_VERBOSE tests. 2010-01-05 15:45:36 -05:00
Jared Cordasco
99511169c3 Fixed erroneous hide/show comments. 2010-01-05 15:38:24 -05:00
Jared Cordasco
acc881f0dd Faster here document outputs. (Help/Usage messages) 2010-01-05 15:33:34 -05:00
Jared Cordasco
d337933fd9 Changed odd tabs to spaces. 2010-01-05 15:33:34 -05:00
Jared Cordasco
0a7e6337b2 Quoting regexp to parse properly. 2010-01-04 17:01:29 -05:00
15 changed files with 498 additions and 323 deletions

View File

@@ -105,7 +105,7 @@ First digit tells the family:
0 - the absolute basics and global stuff
1 - basic every-day usage
2 - add ins
2 - add ins
Second digit tells the particular command we are testing.

View File

@@ -12,7 +12,7 @@ when there are no todos.
#
cat > expect <<EOF
--
TODO: 0 of 0 tasks shown from $HOME/todo.txt
TODO: 0 of 0 tasks shown
EOF
test_expect_success 'null ls' '
@@ -44,7 +44,7 @@ test_expect_success 'null listpri a' '
#
cat > expect <<EOF
--
TODO: 0 of 0 tasks shown from $HOME/todo.tmp
TODO: 0 of 0 tasks shown
EOF
test_expect_success 'null lsa' '

View File

@@ -17,7 +17,7 @@ TODO: 'notice the daisies' added on line 1.
>>> todo.sh list
1 notice the daisies
--
TODO: 1 of 1 tasks shown from $HOME/todo.txt
TODO: 1 of 1 tasks shown
>>> todo.sh add smell the roses
TODO: 'smell the roses' added on line 2.
@@ -26,7 +26,7 @@ TODO: 'smell the roses' added on line 2.
1 notice the daisies
2 smell the roses
--
TODO: 2 of 2 tasks shown from $HOME/todo.txt
TODO: 2 of 2 tasks shown
EOF
#
@@ -36,12 +36,12 @@ test_todo_session 'basic list filtering' <<EOF
>>> todo.sh list daisies
1 notice the daisies
--
TODO: 1 of 2 tasks shown from $HOME/todo.txt
TODO: 1 of 2 tasks shown
>>> todo.sh list smell
2 smell the roses
--
TODO: 1 of 2 tasks shown from $HOME/todo.txt
TODO: 1 of 2 tasks shown
EOF
test_todo_session 'case-insensitive filtering' <<EOF
@@ -52,7 +52,7 @@ TODO: 'smell the uppercase Roses' added on line 3.
2 smell the roses
3 smell the uppercase Roses
--
TODO: 2 of 3 tasks shown from $HOME/todo.txt
TODO: 2 of 3 tasks shown
EOF
test_todo_session 'add with &' <<EOF
@@ -65,7 +65,7 @@ TODO: 'dig the garden & water the flowers' added on line 4.
2 smell the roses
3 smell the uppercase Roses
--
TODO: 4 of 4 tasks shown from $HOME/todo.txt
TODO: 4 of 4 tasks shown
EOF

View File

@@ -17,7 +17,7 @@ TODO: '2009-02-13 notice the daisies' added on line 1.
>>> todo.sh list
1 2009-02-13 notice the daisies
--
TODO: 1 of 1 tasks shown from $HOME/todo.txt
TODO: 1 of 1 tasks shown
EOF
test_tick
@@ -30,7 +30,7 @@ TODO: '2009-02-14 smell the roses' added on line 2.
1 2009-02-13 notice the daisies
2 2009-02-14 smell the roses
--
TODO: 2 of 2 tasks shown from $HOME/todo.txt
TODO: 2 of 2 tasks shown
EOF
test_tick
@@ -44,7 +44,7 @@ TODO: '2009-02-15 mow the lawn' added on line 3.
2 2009-02-14 smell the roses
3 2009-02-15 mow the lawn
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
EOF
# Switch to config file
@@ -63,7 +63,7 @@ TODO: '2009-02-15 take out the trash' added on line 4.
3 2009-02-15 mow the lawn
4 2009-02-15 take out the trash
--
TODO: 4 of 4 tasks shown from $HOME/todo.txt
TODO: 4 of 4 tasks shown
EOF
test_done

78
tests/t1020-addtolistfile.sh Executable file
View File

@@ -0,0 +1,78 @@
#!/bin/sh
test_description='basic addto and list functionality
This test just makes sure the basic addto and listfile
commands work, including support for filtering.
'
. ./test-lib.sh
#
# Addto and listfile
#
test_todo_session 'nonexistant file' <<EOF
>>> todo.sh addto garden.txt notice the daisies
TODO: Destination file $HOME/garden.txt does not exist.
EOF
touch "$HOME/garden.txt"
test_todo_session 'basic addto/listfile' <<EOF
>>> todo.sh addto garden.txt notice the daisies
GARDEN: 'notice the daisies' added on line 1.
>>> todo.sh listfile garden.txt
1 notice the daisies
--
GARDEN: 1 of 1 tasks shown
>>> todo.sh addto garden.txt smell the roses
GARDEN: 'smell the roses' added on line 2.
>>> todo.sh listfile garden.txt
1 notice the daisies
2 smell the roses
--
GARDEN: 2 of 2 tasks shown
EOF
#
# Filter
#
test_todo_session 'basic listfile filtering' <<EOF
>>> todo.sh listfile garden.txt daisies
1 notice the daisies
--
GARDEN: 1 of 2 tasks shown
>>> todo.sh listfile garden.txt smell
2 smell the roses
--
GARDEN: 1 of 2 tasks shown
EOF
test_todo_session 'case-insensitive filtering' <<EOF
>>> todo.sh addto garden.txt smell the uppercase Roses
GARDEN: 'smell the uppercase Roses' added on line 3.
>>> todo.sh listfile garden.txt roses
2 smell the roses
3 smell the uppercase Roses
--
GARDEN: 2 of 3 tasks shown
EOF
test_todo_session 'addto with &' <<EOF
>>> todo.sh addto garden.txt "dig the garden & water the flowers"
GARDEN: 'dig the garden & water the flowers' added on line 4.
>>> todo.sh listfile garden.txt
4 dig the garden & water the flowers
1 notice the daisies
2 smell the roses
3 smell the uppercase Roses
--
GARDEN: 4 of 4 tasks shown
EOF
test_done

71
tests/t1030-addto-date.sh Executable file
View File

@@ -0,0 +1,71 @@
#!/bin/sh
test_description='test the date on addto feature
Tests paths by which we might automatically add
a date to each item.
'
. ./test-lib.sh
touch "$HOME/garden.txt"
#
# Add and list
#
test_todo_session 'cmd line first day' <<EOF
>>> todo.sh -t addto garden.txt notice the daisies
GARDEN: '2009-02-13 notice the daisies' added on line 1.
>>> todo.sh listfile garden.txt
1 2009-02-13 notice the daisies
--
GARDEN: 1 of 1 tasks shown
EOF
test_tick
test_todo_session 'cmd line second day' <<EOF
>>> todo.sh -t addto garden.txt smell the roses
GARDEN: '2009-02-14 smell the roses' added on line 2.
>>> todo.sh listfile garden.txt
1 2009-02-13 notice the daisies
2 2009-02-14 smell the roses
--
GARDEN: 2 of 2 tasks shown
EOF
test_tick
test_todo_session 'cmd line third day' <<EOF
>>> todo.sh -t addto garden.txt mow the lawn
GARDEN: '2009-02-15 mow the lawn' added on line 3.
>>> todo.sh listfile garden.txt
1 2009-02-13 notice the daisies
2 2009-02-14 smell the roses
3 2009-02-15 mow the lawn
--
GARDEN: 3 of 3 tasks shown
EOF
# Switch to config file
echo "export TODOTXT_DATE_ON_ADD=1" >> todo.cfg
# Bump the clock, for good measure.
test_tick 3600
test_todo_session 'config file third day' <<EOF
>>> todo.sh addto garden.txt take out the trash
GARDEN: '2009-02-15 take out the trash' added on line 4.
>>> todo.sh listfile garden.txt
1 2009-02-13 notice the daisies
2 2009-02-14 smell the roses
3 2009-02-15 mow the lawn
4 2009-02-15 take out the trash
--
GARDEN: 4 of 4 tasks shown
EOF
test_done

View File

@@ -26,7 +26,7 @@ replaced with
>>> todo.sh list
1 smell the cows
--
TODO: 1 of 1 tasks shown from $HOME/todo.txt
TODO: 1 of 1 tasks shown
>>> todo.sh replace 1 smell the roses
1: smell the cows
@@ -36,7 +36,7 @@ replaced with
>>> todo.sh list
1 smell the roses
--
TODO: 1 of 1 tasks shown from $HOME/todo.txt
TODO: 1 of 1 tasks shown
EOF
cat > todo.txt <<EOF
@@ -71,6 +71,11 @@ TODO: 4 prioritized (A).
4: (A) collect the eggs
replaced with
4: (A) collect the bread
>>> todo.sh replace 4 collect the eggs
4: (A) collect the bread
replaced with
4: (A) collect the eggs
EOF
test_todo_session 'replace with &' << EOF
>>> todo.sh replace 3 "thrash the hay & thresh the wheat"

View File

@@ -22,7 +22,7 @@ test_todo_session 'basic priority' <<EOF
1 smell the uppercase Roses +flowers @outside
3 stop
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
>>> todo.sh pri 1 B
1: (B) smell the uppercase Roses +flowers @outside
@@ -33,14 +33,14 @@ TODO: 1 prioritized (B).
2 notice the sunflowers
3 stop
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
>>> 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: 3 of 3 tasks shown
>>> todo.sh pri 2 C
2: (C) notice the sunflowers
@@ -51,7 +51,7 @@ TODO: 2 prioritized (C).
2 (C) notice the sunflowers
3 stop
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
>>> todo.sh pri 2 A
2: (A) notice the sunflowers
@@ -62,7 +62,7 @@ TODO: 2 prioritized (A).
1 (B) smell the uppercase Roses +flowers @outside
3 stop
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
>>> todo.sh pri 2 a
2: (A) notice the sunflowers
@@ -72,7 +72,7 @@ TODO: 2 prioritized (A).
2 (A) notice the sunflowers
1 (B) smell the uppercase Roses +flowers @outside
--
TODO: 2 of 3 tasks shown from $HOME/todo.txt
TODO: 2 of 3 tasks shown
>>> todo.sh add "smell the coffee +wakeup"
TODO: 'smell the coffee +wakeup' added on line 4.
@@ -83,7 +83,7 @@ TODO: 'smell the coffee +wakeup' added on line 4.
4 smell the coffee +wakeup
3 stop
--
TODO: 4 of 4 tasks shown from $HOME/todo.txt
TODO: 4 of 4 tasks shown
EOF
test_done

View File

@@ -28,14 +28,14 @@ test_todo_session 'checking TODOTXT_SORT_COMMAND' <<EOF
3 bbb yyy this line should be second.
1 ccc xxx this line should be third.
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
>>> todo.sh -d "$TEST_TODO1_" ls
1 ccc xxx this line should be third.
3 bbb yyy this line should be second.
2 aaa zzz this line should be first.
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
EOF
#
@@ -50,7 +50,7 @@ test_todo_session 'checking TODOTXT_FINAL_FILTER' <<EOF
3 bbb yyy this line s...
1 ccc xxx this line s...
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
EOF
#
@@ -70,14 +70,14 @@ test_todo_session 'final filter suppression' <<EOF
3 baz
1 foo
--
TODO: 2 of 3 tasks shown from $HOME/todo.txt
TODO: 2 of 3 tasks shown
>>> todo.sh -d "$TEST_TODO3_" -x ls
2 bar xxx
3 baz
1 foo
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
EOF
#
@@ -128,7 +128,7 @@ test_todo_session 'plain mode option' <<EOF
19 @con02 +prj03 -- Some project 03 task, no priorty
20 @con02 +prj04 -- Some project 04 task, no priority
--
TODO: 20 of 20 tasks shown from $HOME/todo.txt
TODO: 20 of 20 tasks shown
>>> todo.sh -p ls
01 (A) @con01 +prj01 -- Some project 01 task, pri A
@@ -152,7 +152,7 @@ TODO: 20 of 20 tasks shown from $HOME/todo.txt
19 @con02 +prj03 -- Some project 03 task, no priorty
20 @con02 +prj04 -- Some project 04 task, no priority
--
TODO: 20 of 20 tasks shown from $HOME/todo.txt
TODO: 20 of 20 tasks shown
EOF
#
@@ -203,7 +203,7 @@ test_todo_session 'context, project, and priority suppression' <<EOF
19 @con02 +prj03 -- Some project 03 task, no priorty
20 @con02 +prj04 -- Some project 04 task, no priority
--
TODO: 20 of 20 tasks shown from $HOME/todo.txt
TODO: 20 of 20 tasks shown
>>> todo.sh ls @con01
01 (A) @con01 +prj01 -- Some project 01 task, pri A
@@ -217,7 +217,7 @@ TODO: 20 of 20 tasks shown from $HOME/todo.txt
17 @con01 +prj01 -- Some project 01 task, no priority
18 @con01 +prj02 -- Some project 02 task, no priority
--
TODO: 10 of 20 tasks shown from $HOME/todo.txt
TODO: 10 of 20 tasks shown
>>> todo.sh -P ls @con01
01 @con01 +prj01 -- Some project 01 task, pri A
@@ -231,7 +231,7 @@ TODO: 10 of 20 tasks shown from $HOME/todo.txt
17 @con01 +prj01 -- Some project 01 task, no priority
18 @con01 +prj02 -- Some project 02 task, no priority
--
TODO: 10 of 20 tasks shown from $HOME/todo.txt
TODO: 10 of 20 tasks shown
>>> todo.sh -+ ls @con01
01 (A) @con01 -- Some project 01 task, pri A
@@ -245,7 +245,7 @@ TODO: 10 of 20 tasks shown from $HOME/todo.txt
17 @con01 -- Some project 01 task, no priority
18 @con01 -- Some project 02 task, no priority
--
TODO: 10 of 20 tasks shown from $HOME/todo.txt
TODO: 10 of 20 tasks shown
>>> todo.sh -@ ls @con01
01 (A) +prj01 -- Some project 01 task, pri A
@@ -259,7 +259,7 @@ TODO: 10 of 20 tasks shown from $HOME/todo.txt
17 +prj01 -- Some project 01 task, no priority
18 +prj02 -- Some project 02 task, no priority
--
TODO: 10 of 20 tasks shown from $HOME/todo.txt
TODO: 10 of 20 tasks shown
>>> todo.sh -P -@ ls @con01
01 +prj01 -- Some project 01 task, pri A
@@ -273,7 +273,7 @@ TODO: 10 of 20 tasks shown from $HOME/todo.txt
17 +prj01 -- Some project 01 task, no priority
18 +prj02 -- Some project 02 task, no priority
--
TODO: 10 of 20 tasks shown from $HOME/todo.txt
TODO: 10 of 20 tasks shown
>>> todo.sh -P -@ -+ -P -@ -+ ls @con01
01 (A) @con01 +prj01 -- Some project 01 task, pri A
@@ -287,7 +287,7 @@ TODO: 10 of 20 tasks shown from $HOME/todo.txt
17 @con01 +prj01 -- Some project 01 task, no priority
18 @con01 +prj02 -- Some project 02 task, no priority
--
TODO: 10 of 20 tasks shown from $HOME/todo.txt
TODO: 10 of 20 tasks shown
>>> todo.sh -P -@ -+ -P -@ -+ -P -@ -+ ls @con01
01 -- Some project 01 task, pri A
@@ -301,7 +301,7 @@ TODO: 10 of 20 tasks shown from $HOME/todo.txt
17 -- Some project 01 task, no priority
18 -- Some project 02 task, no priority
--
TODO: 10 of 20 tasks shown from $HOME/todo.txt
TODO: 10 of 20 tasks shown
EOF
#
@@ -536,7 +536,7 @@ test_todo_session 'check line number padding, out to 3 digits' <<EOF
111 hex6E this is another line
112 hex6F this is another line
--
TODO: 112 of 112 tasks shown from $HOME/todo.txt
TODO: 112 of 112 tasks shown
EOF
#
@@ -564,7 +564,7 @@ test_todo_session 'check that blank lines are ignored for less than 10 items' <<
7 hex06 this is another line
8 hex07 this is another line
--
TODO: 7 of 7 tasks shown from $HOME/todo.txt
TODO: 7 of 7 tasks shown
EOF
# More than 10
@@ -592,7 +592,7 @@ test_todo_session 'check that blank lines are ignored for blank lines whose ID b
09 hex08 this is another line
10 hex09 this is another line
--
TODO: 9 of 9 tasks shown from $HOME/todo.txt
TODO: 9 of 9 tasks shown
EOF
cat > todo.txt <<EOF
hex00 this is one line
@@ -617,7 +617,7 @@ test_todo_session 'check that blank lines are ignored for blank lines whose ID b
09 hex08 this is another line
10 hex09 this is another line
--
TODO: 8 of 8 tasks shown from $HOME/todo.txt
TODO: 8 of 8 tasks shown
EOF
test_done

View File

@@ -21,14 +21,14 @@ test_todo_session 'basic prepend' <<EOF
2 notice the sunflowers
3 stop
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
>>> 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: 3 of 3 tasks shown
>>> todo.sh prepend 2 test
2: test notice the sunflowers
@@ -38,7 +38,7 @@ TODO: 3 of 3 tasks shown from $HOME/todo.txt
3 stop
2 test notice the sunflowers
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
>>> todo.sh prepend 1 test
1: (B) test smell the uppercase Roses +flowers @outside
@@ -48,7 +48,7 @@ TODO: 3 of 3 tasks shown from $HOME/todo.txt
3 stop
2 test notice the sunflowers
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
EOF

View File

@@ -32,7 +32,7 @@ test_todo_session 'basic do' <<EOF
1 smell the uppercase Roses +flowers @outside
3 stop
--
TODO: 7 of 7 tasks shown from $HOME/todo.txt
TODO: 7 of 7 tasks shown
>>> todo.sh do 7,6
7: x 2009-02-13 remove4
@@ -50,7 +50,7 @@ TODO: $HOME/todo.txt archived.
1 smell the uppercase Roses +flowers @outside
3 stop
--
TODO: 5 of 5 tasks shown from $HOME/todo.txt
TODO: 5 of 5 tasks shown
>>> todo.sh do 5 4
5: x 2009-02-13 remove2
@@ -66,7 +66,7 @@ TODO: $HOME/todo.txt archived.
1 smell the uppercase Roses +flowers @outside
3 stop
--
TODO: 3 of 3 tasks shown from $HOME/todo.txt
TODO: 3 of 3 tasks shown
EOF
test_todo_session 'fail multiple do attempts' <<EOF

View File

@@ -24,7 +24,7 @@ test_todo_session 'basic append' <<EOF
>>> todo.sh list
1 notice the daisies smell the roses
--
TODO: 1 of 1 tasks shown from $HOME/todo.txt
TODO: 1 of 1 tasks shown
EOF
test_todo_session 'basic append with &' <<EOF
@@ -34,7 +34,7 @@ test_todo_session 'basic append with &' <<EOF
>>> todo.sh list
1 notice the daisies smell the roses see the wasps & bees
--
TODO: 1 of 1 tasks shown from $HOME/todo.txt
TODO: 1 of 1 tasks shown
EOF

View File

@@ -18,7 +18,7 @@ cat /dev/null > $HOME/todo.txt
# Run replace
"$HOME/bin/todo.sh" replace 1 "eat apples
eat oranges
eat oranges
drink milk" > $HOME/output.multi
# Test output against expected
@@ -43,7 +43,7 @@ cat /dev/null > $HOME/todo.txt
# Run add
"$HOME/bin/todo.sh" add "eat apples
eat oranges
eat oranges
drink milk" > $HOME/output.multi
# Test output against expected
@@ -68,7 +68,7 @@ cat /dev/null > $HOME/todo.txt
# Run append
"$HOME/bin/todo.sh" append 1 "eat apples
eat oranges
eat oranges
drink milk" > $HOME/output.multi
# Test output against expected
@@ -93,7 +93,7 @@ cat /dev/null > $HOME/todo.txt
# Run prepend
"$HOME/bin/todo.sh" prepend 1 "eat apples
eat oranges
eat oranges
drink milk" > $HOME/output.multi
# Test output against expected

View File

@@ -17,23 +17,23 @@ test_todo_session 'basic tests' <<EOF
4 smell the coffee +wakeup
3 stop
--
TODO: 4 of 4 tasks shown from $HOME/todo.txt
TODO: 4 of 4 tasks shown
>>> todo.sh -p list +flowers
1 (B) smell the uppercase Roses +flowers @outside
--
TODO: 1 of 4 tasks shown from $HOME/todo.txt
TODO: 1 of 4 tasks shown
>>> todo.sh -p list flowers
2 (A) notice the sunflowers
1 (B) smell the uppercase Roses +flowers @outside
--
TODO: 2 of 4 tasks shown from $HOME/todo.txt
TODO: 2 of 4 tasks shown
>>> todo.sh -p list flowers out
1 (B) smell the uppercase Roses +flowers @outside
--
TODO: 1 of 4 tasks shown from $HOME/todo.txt
TODO: 1 of 4 tasks shown
>>> todo.sh -a do 2
2: x 2009-02-13 notice the sunflowers
@@ -45,7 +45,7 @@ TODO: 2 marked as done.
3 stop
2 x 2009-02-13 notice the sunflowers
--
TODO: 4 of 4 tasks shown from $HOME/todo.txt
TODO: 4 of 4 tasks shown
>>> todo.sh add "make the coffee +wakeup"
TODO: 'make the coffee +wakeup' added on line 5.
@@ -54,7 +54,7 @@ TODO: 'make the coffee +wakeup' added on line 5.
5 make the coffee +wakeup
4 smell the coffee +wakeup
--
TODO: 2 of 5 tasks shown from $HOME/todo.txt
TODO: 2 of 5 tasks shown
>>> todo.sh add "visit http://example.com"
TODO: 'visit http://example.com' added on line 6.
@@ -67,7 +67,7 @@ TODO: 'visit http://example.com' added on line 6.
6 visit http://example.com
2 x 2009-02-13 notice the sunflowers
--
TODO: 6 of 6 tasks shown from $HOME/todo.txt
TODO: 6 of 6 tasks shown
>>> todo.sh archive
x 2009-02-13 notice the sunflowers
@@ -80,7 +80,7 @@ TODO: $HOME/todo.txt archived.
2 stop
5 visit http://example.com
--
TODO: 5 of 5 tasks shown from $HOME/todo.txt
TODO: 5 of 5 tasks shown
>>> todo.sh report
TODO: Report file updated.
@@ -105,7 +105,7 @@ usage: todo.sh append ITEM# "TEXT TO APPEND"
2 stop and think
5 visit http://example.com
--
TODO: 5 of 5 tasks shown from $HOME/todo.txt
TODO: 5 of 5 tasks shown
>>> todo.sh append 10 "hej!"
10: No such todo.
@@ -118,7 +118,7 @@ TODO: 5 of 5 tasks shown from $HOME/todo.txt
2 stop and think
5 visit http://example.com
--
TODO: 5 of 5 tasks shown from $HOME/todo.txt
TODO: 5 of 5 tasks shown
>>> todo.sh do 10
10: No such todo.
@@ -131,7 +131,7 @@ TODO: 5 of 5 tasks shown from $HOME/todo.txt
2 stop and think
5 visit http://example.com
--
TODO: 5 of 5 tasks shown from $HOME/todo.txt
TODO: 5 of 5 tasks shown
>>> todo.sh add "the coffee +wakeup"
TODO: 'the coffee +wakeup' added on line 6.
@@ -144,7 +144,7 @@ TODO: 'the coffee +wakeup' added on line 6.
6 the coffee +wakeup
5 visit http://example.com
--
TODO: 6 of 6 tasks shown from $HOME/todo.txt
TODO: 6 of 6 tasks shown
>>> todo.sh prepend 6 "make"
6: make the coffee +wakeup
@@ -157,7 +157,7 @@ TODO: 6 of 6 tasks shown from $HOME/todo.txt
2 stop and think
5 visit http://example.com
--
TODO: 6 of 6 tasks shown from $HOME/todo.txt
TODO: 6 of 6 tasks shown
>>> todo.sh remdup
Usage: todo.sh [-fhpantvV] [-d todo_config] action [task_number] [task_description]

533
todo.sh
View File

@@ -4,16 +4,17 @@
# Place the .todo/config file in your home directory or use the -d option for a custom location.
[ -f VERSION-FILE ] && . VERSION-FILE || VERSION="@DEV_VERSION@"
version() { sed -e 's/^ //' <<EndVersion
TODO.TXT Command Line Interface v$VERSION
First release: 5/11/2006
Original conception by: Gina Trapani (http://ginatrapani.org)
Contributors: http://github.com/ginatrapani/todo.txt-cli/network
License: GPL, http://www.gnu.org/copyleft/gpl.html
More information and mailing list at http://todotxt.com
Code repository: http://github.com/ginatrapani/todo.txt-cli/tree/master
EndVersion
version() {
cat <<-EndVersion
TODO.TXT Command Line Interface v$VERSION
First release: 5/11/2006
Original conception by: Gina Trapani (http://ginatrapani.org)
Contributors: http://github.com/ginatrapani/todo.txt-cli/network
License: GPL, http://www.gnu.org/copyleft/gpl.html
More information and mailing list at http://todotxt.com
Code repository: http://github.com/ginatrapani/todo.txt-cli/tree/master
EndVersion
exit 1
}
@@ -26,202 +27,202 @@ oneline_usage="$TODO_SH [-fhpantvV] [-d todo_config] action [task_number] [task_
usage()
{
sed -e 's/^ //' <<EndUsage
Usage: $oneline_usage
Try '$TODO_SH -h' for more information.
EndUsage
cat <<-EndUsage
Usage: $oneline_usage
Try '$TODO_SH -h' for more information.
EndUsage
exit 1
}
shorthelp()
{
sed -e 's/^ //' <<EndHelp
Usage: $oneline_usage
cat <<-EndHelp
Usage: $oneline_usage
Actions:
add|a "THING I NEED TO DO +project @context"
addto DEST "TEXT TO ADD"
addm "THINGS I NEED TO DO
MORE THINGS I NEED TO DO"
append|app NUMBER "TEXT TO APPEND"
archive
command [ACTIONS]
del|rm NUMBER [TERM]
dp|depri NUMBER
do NUMBER
help
list|ls [TERM...]
listall|lsa [TERM...]
listcon|lsc
listfile|lf SRC [TERM...]
listpri|lsp [PRIORITY]
listproj|lsprj
move|mv NUMBER DEST [SRC]
prepend|prep NUMBER "TEXT TO PREPEND"
pri|p NUMBER PRIORITY
replace NUMBER "UPDATED TODO"
report
Actions:
add|a "THING I NEED TO DO +project @context"
addto DEST "TEXT TO ADD"
addm "THINGS I NEED TO DO
MORE THINGS I NEED TO DO"
append|app NUMBER "TEXT TO APPEND"
archive
command [ACTIONS]
del|rm NUMBER [TERM]
dp|depri NUMBER
do NUMBER
help
list|ls [TERM...]
listall|lsa [TERM...]
listcon|lsc
listfile|lf SRC [TERM...]
listpri|lsp [PRIORITY]
listproj|lsprj
move|mv NUMBER DEST [SRC]
prepend|prep NUMBER "TEXT TO PREPEND"
pri|p NUMBER PRIORITY
replace NUMBER "UPDATED TODO"
report
See "help" for more details.
EndHelp
See "help" for more details.
EndHelp
exit 0
}
help()
{
sed -e 's/^ //' <<EndHelp
Usage: $oneline_usage
cat <<-EndHelp
Usage: $oneline_usage
Actions:
add "THING I NEED TO DO +project @context"
a "THING I NEED TO DO +project @context"
Adds THING I NEED TO DO to your todo.txt file on its own line.
Project and context notation optional.
Quotes optional.
Actions:
add "THING I NEED TO DO +project @context"
a "THING I NEED TO DO +project @context"
Adds THING I NEED TO DO to your todo.txt file on its own line.
Project and context notation optional.
Quotes optional.
addm "FIRST THING I NEED TO DO +project1 @context
SECOND THING I NEED TO DO +project2 @context"
Adds FIRST THING I NEED TO DO to your todo.txt on its own line and
Adds SECOND THING I NEED TO DO to you todo.txt on its own line.
Project and context notation optional.
Quotes optional.
addm "FIRST THING I NEED TO DO +project1 @context
SECOND THING I NEED TO DO +project2 @context"
Adds FIRST THING I NEED TO DO to your todo.txt on its own line and
Adds SECOND THING I NEED TO DO to you todo.txt on its own line.
Project and context notation optional.
Quotes optional.
addto DEST "TEXT TO ADD"
Adds a line of text to any file located in the todo.txt directory.
For example, addto inbox.txt "decide about vacation"
addto DEST "TEXT TO ADD"
Adds a line of text to any file located in the todo.txt directory.
For example, addto inbox.txt "decide about vacation"
append NUMBER "TEXT TO APPEND"
app NUMBER "TEXT TO APPEND"
Adds TEXT TO APPEND to the end of the todo on line NUMBER.
Quotes optional.
append NUMBER "TEXT TO APPEND"
app NUMBER "TEXT TO APPEND"
Adds TEXT TO APPEND to the end of the todo on line NUMBER.
Quotes optional.
archive
Moves done items from todo.txt to done.txt and removes blank lines.
archive
Moves done items from todo.txt to done.txt and removes blank lines.
command [ACTIONS]
Runs the remaining arguments using only todo.sh builtins.
Will not call any .todo.actions.d scripts.
command [ACTIONS]
Runs the remaining arguments using only todo.sh builtins.
Will not call any .todo.actions.d scripts.
del NUMBER [TERM]
rm NUMBER [TERM]
Deletes the item on line NUMBER in todo.txt.
If term specified, deletes only the term from the line.
del NUMBER [TERM]
rm NUMBER [TERM]
Deletes the item on line NUMBER in todo.txt.
If term specified, deletes only the term from the line.
depri NUMBER
dp NUMBER
Deprioritizes (removes the priority) from the item
on line NUMBER in todo.txt.
depri NUMBER
dp NUMBER
Deprioritizes (removes the priority) from the item
on line NUMBER in todo.txt.
do NUMBER[, NUMBER, NUMBER, ...]
Marks item(s) on line NUMBER as done in todo.txt.
do NUMBER[, NUMBER, NUMBER, ...]
Marks item(s) on line NUMBER as done in todo.txt.
help
Display this help message.
help
Display this help message.
list [TERM...]
ls [TERM...]
Displays all todo's that contain TERM(s) sorted by priority with line
numbers. If no TERM specified, lists entire todo.txt.
list [TERM...]
ls [TERM...]
Displays all todo's that contain TERM(s) sorted by priority with line
numbers. If no TERM specified, lists entire todo.txt.
listall [TERM...]
lsa [TERM...]
Displays all the lines in todo.txt AND done.txt that contain TERM(s)
sorted by priority with line numbers. If no TERM specified, lists
entire todo.txt AND done.txt concatenated and sorted.
listall [TERM...]
lsa [TERM...]
Displays all the lines in todo.txt AND done.txt that contain TERM(s)
sorted by priority with line numbers. If no TERM specified, lists
entire todo.txt AND done.txt concatenated and sorted.
listcon
lsc
Lists all the task contexts that start with the @ sign in todo.txt.
listcon
lsc
Lists all the task contexts that start with the @ sign in todo.txt.
listfile SRC [TERM...]
lf SRC [TERM...]
Displays all the lines in SRC file located in the todo.txt directory,
sorted by priority with line numbers. If TERM specified, lists
all lines that contain TERM in SRC file.
listfile SRC [TERM...]
lf SRC [TERM...]
Displays all the lines in SRC file located in the todo.txt directory,
sorted by priority with line numbers. If TERM specified, lists
all lines that contain TERM in SRC file.
listpri [PRIORITY]
lsp [PRIORITY]
Displays all items prioritized PRIORITY.
If no PRIORITY specified, lists all prioritized items.
listpri [PRIORITY]
lsp [PRIORITY]
Displays all items prioritized PRIORITY.
If no PRIORITY specified, lists all prioritized items.
listproj
lsprj
Lists all the projects that start with the + sign in todo.txt.
listproj
lsprj
Lists all the projects that start with the + sign in todo.txt.
move NUMBER DEST [SRC]
mv NUMBER DEST [SRC]
Moves a line from source text file (SRC) to destination text file (DEST).
Both source and destination file must be located in the directory defined
in the configuration directory. When SRC is not defined
it's by default todo.txt.
move NUMBER DEST [SRC]
mv NUMBER DEST [SRC]
Moves a line from source text file (SRC) to destination text file (DEST).
Both source and destination file must be located in the directory defined
in the configuration directory. When SRC is not defined
it's by default todo.txt.
prepend NUMBER "TEXT TO PREPEND"
prep NUMBER "TEXT TO PREPEND"
Adds TEXT TO PREPEND to the beginning of the todo on line NUMBER.
Quotes optional.
prepend NUMBER "TEXT TO PREPEND"
prep NUMBER "TEXT TO PREPEND"
Adds TEXT TO PREPEND to the beginning of the todo on line NUMBER.
Quotes optional.
pri NUMBER PRIORITY
p NUMBER PRIORITY
Adds PRIORITY to todo on line NUMBER. If the item is already
prioritized, replaces current priority with new PRIORITY.
PRIORITY must be an uppercase letter between A and Z.
pri NUMBER PRIORITY
p NUMBER PRIORITY
Adds PRIORITY to todo on line NUMBER. If the item is already
prioritized, replaces current priority with new PRIORITY.
PRIORITY must be an uppercase letter between A and Z.
replace NUMBER "UPDATED TODO"
Replaces todo on line NUMBER with UPDATED TODO.
replace NUMBER "UPDATED TODO"
Replaces todo on line NUMBER with UPDATED TODO.
report
Adds the number of open todo's and closed done's to report.txt.
report
Adds the number of open todo's and closed done's to report.txt.
Options:
-@
Hide context names in list output. Use twice to show context
names (default).
-+
Hide project names in list output. Use twice to show project
names (default).
-d CONFIG_FILE
Use a configuration file other than the default ~/.todo/config
-f
Forces actions without confirmation or interactive input
-h
Display a short help message
-p
Plain mode turns off colors
-P
Hide priority labels in list output. Use twice to show
priority labels (default).
-a
Don't auto-archive tasks automatically on completion
-n
Don't preserve line numbers; automatically remove blank lines
on task deletion
-t
Prepend the current date to a task automatically
when it's added.
-v
Verbose mode turns on confirmation messages
-vv
Extra verbose mode prints some debugging information
-V
Displays version, license and credits
-x
Disables TODOTXT_FINAL_FILTER
Options:
-@
Hide context names in list output. Use twice to show context
names (default).
-+
Hide project names in list output. Use twice to show project
names (default).
-d CONFIG_FILE
Use a configuration file other than the default ~/.todo/config
-f
Forces actions without confirmation or interactive input
-h
Display a short help message
-p
Plain mode turns off colors
-P
Hide priority labels in list output. Use twice to show
priority labels (default).
-a
Don't auto-archive tasks automatically on completion
-n
Don't preserve line numbers; automatically remove blank lines
on task deletion
-t
Prepend the current date to a task automatically
when it's added.
-v
Verbose mode turns on confirmation messages
-vv
Extra verbose mode prints some debugging information
-V
Displays version, license and credits
-x
Disables TODOTXT_FINAL_FILTER
Environment variables:
TODOTXT_AUTO_ARCHIVE=0 is same as option -a
TODOTXT_CFG_FILE=CONFIG_FILE is same as option -d CONFIG_FILE
TODOTXT_FORCE=1 is same as option -f
TODOTXT_PRESERVE_LINE_NUMBERS=0 is same as option -n
TODOTXT_PLAIN=1 is same as option -p
TODOTXT_DATE_ON_ADD=1 is same as option -t
TODOTXT_VERBOSE=1 is same as option -v
TODOTXT_DEFAULT_ACTION="" run this when called with no arguments
TODOTXT_SORT_COMMAND="sort ..." customize list output
TODOTXT_FINAL_FILTER="sed ..." customize list after color, P@+ hiding
EndHelp
Environment variables:
TODOTXT_AUTO_ARCHIVE=0 is same as option -a
TODOTXT_CFG_FILE=CONFIG_FILE is same as option -d CONFIG_FILE
TODOTXT_FORCE=1 is same as option -f
TODOTXT_PRESERVE_LINE_NUMBERS=0 is same as option -n
TODOTXT_PLAIN=1 is same as option -p
TODOTXT_DATE_ON_ADD=1 is same as option -t
TODOTXT_VERBOSE=1 is same as option -v
TODOTXT_DEFAULT_ACTION="" run this when called with no arguments
TODOTXT_SORT_COMMAND="sort ..." customize list output
TODOTXT_FINAL_FILTER="sed ..." customize list after color, P@+ hiding
EndHelp
if [ -d "$TODO_ACTIONS_DIR" ]
then
@@ -257,12 +258,14 @@ cleaninput()
# Cleanup the input
# Replace newlines with spaces Always
input=`echo $input | tr -d '\r|\n'`
action_regexp="^\(append\|app\|prepend\|prep\|replace\)$"
# Check which action we are being used in as this affects what cleaning we do
if [[ $action =~ ^(append|app|prepend|prep|replace)$ ]]; then
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
fi
}
archive()
@@ -288,7 +291,7 @@ do
## HIDE_CONTEXT_NAMES starts at zero (false); increment it to one
## (true) the first time this flag is seen. Each time the flag
## is seen after that, increment it again so that an even
## number hides project names and an odd number shows project
## number shows context names and an odd number hides context
## names.
: $(( HIDE_CONTEXT_NAMES++ ))
if [ $(( $HIDE_CONTEXT_NAMES % 2 )) -eq 0 ]
@@ -304,7 +307,7 @@ do
## HIDE_PROJECT_NAMES starts at zero (false); increment it to one
## (true) the first time this flag is seen. Each time the flag
## is seen after that, increment it again so that an even
## number hides project names and an odd number shows project
## number shows project names and an odd number hides project
## names.
: $(( HIDE_PROJECT_NAMES++ ))
if [ $(( $HIDE_PROJECT_NAMES % 2 )) -eq 0 ]
@@ -338,8 +341,8 @@ do
## HIDE_PRIORITY_LABELS starts at zero (false); increment it to one
## (true) the first time this flag is seen. Each time the flag
## is seen after that, increment it again so that an even
## number hides project names and an odd number shows project
## names.
## number shows priority labels and an odd number hides priority
## labels.
: $(( HIDE_PRIORITY_LABELS++ ))
if [ $(( $HIDE_PRIORITY_LABELS % 2 )) -eq 0 ]
then
@@ -467,6 +470,24 @@ fi
# === HEAVY LIFTING ===
shopt -s extglob
_addto() {
file="$1"
input="$2"
cleaninput $input
if [[ $TODOTXT_DATE_ON_ADD = 1 ]]; then
now=`date '+%Y-%m-%d'`
input="$now $input"
fi
echo "$input" >> "$file"
[ $TODOTXT_VERBOSE -gt 0 ] && {
TASKNUM=$(sed -n '$ =' "$file")
BASE=$(basename "$file")
PREFIX=$(echo ${BASE%%.[^.]*} | tr [a-z] [A-Z])
echo "${PREFIX}: '$input' added on line $TASKNUM."
}
}
_list() {
local FILE="$1"
## If the file starts with a "/" use absolute path. Otherwise,
@@ -566,11 +587,13 @@ _list() {
echo -ne "$filtered_items${filtered_items:+\n}"
if [ $TODOTXT_VERBOSE -gt 0 ]; then
BASE=$(basename "$FILE")
PREFIX=$(echo ${BASE%%.[^.]*} | tr [a-z] [A-Z])
NUMTASKS=$( echo -ne "$filtered_items" | sed -n '$ =' )
TOTALTASKS=$( echo -ne "$items" | sed -n '$ =' )
echo "--"
echo "TODO: ${NUMTASKS:-0} of ${TOTALTASKS:-0} tasks shown from $FILE"
echo "${PREFIX}: ${NUMTASKS:-0} of ${TOTALTASKS:-0} tasks shown"
fi
if [ $TODOTXT_VERBOSE -gt 1 ]
then
@@ -610,15 +633,7 @@ case $action in
shift
input=$*
fi
cleaninput $input
if [[ $TODOTXT_DATE_ON_ADD = 1 ]]; then
now=`date '+%Y-%m-%d'`
input="$now $input"
fi
echo "$input" >> "$TODO_FILE"
TASKNUM=$(sed -n '$ =' "$TODO_FILE")
[ $TODOTXT_VERBOSE -gt 0 ] && echo "TODO: '$input' added on line $TASKNUM."
_addto "$TODO_FILE" "$input"
cleanup;;
"addm")
@@ -638,13 +653,7 @@ case $action in
# Treat each line seperately
for line in $input ; do
if [[ $TODOTXT_DATE_ON_ADD = 1 ]]; then
now=`date '+%Y-%m-%d'`
line="$now $line"
fi
echo "$line" >> "$TODO_FILE"
TASKNUM=$(sed -n '$ =' "$TODO_FILE")
[ $TODOTXT_VERBOSE -gt 0 ] && echo "TODO: '$line' added on line $TASKNUM."
_addto "$TODO_FILE" "$line"
done
IFS=$SAVEIFS
cleanup;;
@@ -658,9 +667,7 @@ case $action in
input=$*
if [ -f "$dest" ]; then
echo "$input" >> "$dest"
TASKNUM=$(sed -n '$ =' "$dest")
[ $TODOTXT_VERBOSE -gt 0 ] && echo "TODO: '$input' added to $dest on line $TASKNUM."
_addto "$dest" "$input"
else
echo "TODO: Destination file $dest does not exist."
fi
@@ -683,8 +690,10 @@ case $action in
cleaninput $input
if sed -i.bak $item" s|^.*|& $input|" "$TODO_FILE"; then
newtodo=$(sed "$item!d" "$TODO_FILE")
[ $TODOTXT_VERBOSE -gt 0 ] && echo "$item: $newtodo"
[ $TODOTXT_VERBOSE -gt 0 ] && {
newtodo=$(sed "$item!d" "$TODO_FILE")
echo "$item: $newtodo"
}
else
echo "TODO: Error appending task $item."
fi
@@ -745,9 +754,11 @@ case $action in
if [ "$?" -eq 0 ]; then
#it's all good, continue
sed -i.bak -e $item"s/^(.) //" "$TODO_FILE"
NEWTODO=$(sed "$item!d" "$TODO_FILE")
[ $TODOTXT_VERBOSE -gt 0 ] && echo "`echo "$item: $NEWTODO"`"
[ $TODOTXT_VERBOSE -gt 0 ] && echo "TODO: $item deprioritized."
[ $TODOTXT_VERBOSE -gt 0 ] && {
NEWTODO=$(sed "$item!d" "$TODO_FILE")
echo "`echo "$item: $NEWTODO"`"
echo "TODO: $item deprioritized."
}
cleanup
else
die "$errmsg"
@@ -755,45 +766,47 @@ case $action in
"do" )
errmsg="usage: $TODO_SH do ITEM#"
# shift so we get arguments to the do request
shift;
# shift so we get arguments to the do request
shift;
# Split multiple do's, if comma seperated change to whitespace sepereated
# Loop the 'do' function for each item
for item in `echo $* | tr ',' ' '`; do
[ -z "$item" ] && die "$errmsg"
[[ "$item" = +([0-9]) ]] || die "$errmsg"
todo=$(sed "$item!d" "$TODO_FILE")
[ -z "$todo" ] && die "$item: No such todo."
# Split multiple do's, if comma seperated change to whitespace sepereated
# Loop the 'do' function for each item
for item in `echo $* | tr ',' ' '`; do
[ -z "$item" ] && die "$errmsg"
[[ "$item" = +([0-9]) ]] || die "$errmsg"
todo=$(sed "$item!d" "$TODO_FILE")
[ -z "$todo" ] && die "$item: No such todo."
# Check if this item has already been done
if [ `echo $todo | grep -c "^x "` -eq 0 ] ; then
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"
[ $TODOTXT_VERBOSE -gt 0 ] && {
newtodo=$(sed "$item!d" "$TODO_FILE")
echo "$item: $newtodo"
echo "TODO: $item marked as done."
}
else
echo "$item is already marked done"
fi
done
# Check if this item has already been done
if [ `echo $todo | grep -c "^x "` -eq 0 ] ; then
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"
newtodo=$(sed "$item!d" "$TODO_FILE")
[ $TODOTXT_VERBOSE -gt 0 ] && echo "$item: $newtodo"
[ $TODOTXT_VERBOSE -gt 0 ] && echo "TODO: $item marked as done."
else
echo "$item is already marked done"
fi
done
if [ $TODOTXT_AUTO_ARCHIVE = 1 ]; then
archive
fi
cleanup ;;
"help" )
if [ -t 1 ] ; then # STDOUT is a TTY
if (exec which ${PAGER:-less} 2>/dev/null >/dev/null); then
# we have a working PAGER (or less as a default)
help | exec ${PAGER:-less}
fi
fi
help # just in case something failed above, we go ahead and just spew to STDOUT
if [ -t 1 ] ; then # STDOUT is a TTY
if (exec which ${PAGER:-less} 2>/dev/null >/dev/null); then
# we have a working PAGER (or less as a default)
help | exec ${PAGER:-less}
fi
fi
help # just in case something failed above, we go ahead and just spew to STDOUT
;;
"list" | "ls" )
@@ -917,28 +930,32 @@ case $action in
fi
cleaninput $input
# 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
# 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 priority isn't set prepend
if [ -z $priority ]; then
# 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"
[ $TODOTXT_VERBOSE -gt 0 ] && {
newtodo=$(sed "$item!d" "$TODO_FILE")
echo "$item: $newtodo"
}
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"
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
[ $TODOTXT_VERBOSE -gt 0 ] && {
newtodo=$(sed "$item!d" "$TODO_FILE")
echo "$item: $newtodo"
}
else
echo "TODO: Error prepending task $item."
echo "TODO: Error prepending task $item."
fi
fi
fi
cleanup;;
"pri" | "p" )
@@ -957,9 +974,11 @@ note: PRIORITY must be anywhere from A to Z."
if [ "$?" -eq 0 ]; then
#it's all good, continue
sed -i.bak -e $item"s/^(.) //" -e $item"s/^/($newpri) /" "$TODO_FILE"
NEWTODO=$(sed "$item!d" "$TODO_FILE")
[ $TODOTXT_VERBOSE -gt 0 ] && echo "`echo "$item: $NEWTODO"`"
[ $TODOTXT_VERBOSE -gt 0 ] && echo "TODO: $item prioritized ($newpri)."
[ $TODOTXT_VERBOSE -gt 0 ] && {
NEWTODO=$(sed "$item!d" "$TODO_FILE")
echo "`echo "$item: $NEWTODO"`"
echo "TODO: $item prioritized ($newpri)."
}
cleanup
else
die "$errmsg"
@@ -992,12 +1011,14 @@ note: PRIORITY must be anywhere from A to Z."
if [ -z $priority ]; then
sed -i.bak $item" s|^.*|$input|" "$TODO_FILE"
else
sed -i.bak -e "$item s/^(.) //" -e "$item s|^.*|\($priority\) $1|" "$TODO_FILE"
sed -i.bak -e "$item s/^(.) //" -e "$item s|^.*|\($priority\) $input|" "$TODO_FILE"
fi
[ $TODOTXT_VERBOSE -gt 0 ] && NEWTODO=$(head -$item "$TODO_FILE" | tail -1)
[ $TODOTXT_VERBOSE -gt 0 ] && echo "$item: $todo"
[ $TODOTXT_VERBOSE -gt 0 ] && echo "replaced with"
[ $TODOTXT_VERBOSE -gt 0 ] && echo "$item: $NEWTODO"
[ $TODOTXT_VERBOSE -gt 0 ] && {
NEWTODO=$(head -$item "$TODO_FILE" | tail -1)
echo "$item: $todo"
echo "replaced with"
echo "$item: $NEWTODO"
}
cleanup;;
"report" )