New 'ids' command, and stdin reading

- New 'ids' command that returns a filtered set of task ID numbers, instead
  of the actual tasks.  For advanced pipeline use.
- Now supplements the command line with data read from standard input, which
  allows commands like:  echo 'add Pay the bills' | task
This commit is contained in:
Paul Beckingham
2011-03-16 00:53:29 -04:00
parent dd8bceecf7
commit 9470e9af17
22 changed files with 173 additions and 50 deletions

View File

@@ -34,7 +34,7 @@ use Test::More tests => 15;
# Create the rc file, using rc.name:value.
unlink 'foo.rc';
rmtree 'foo', 0, 0;
qx{echo 'y'|../src/task rc:foo.rc rc.data.location:foo};
qx{echo '-- y'|../src/task rc:foo.rc rc.data.location:foo};
ok (-r 'foo.rc', 'Created default rc file');
ok (-d 'foo', 'Created default data directory');
@@ -46,40 +46,40 @@ unlink 'foo.rc';
ok (!-r 'foo.rc', 'Removed foo.rc');
# Do it all again, with rc.name=value.
qx{echo 'y'|../src/task rc:foo.rc rc.data.location:foo};
qx{echo '-- y'|../src/task rc:foo.rc rc.data.location:foo};
ok (-r 'foo.rc', 'Created default rc file');
ok (-d 'foo', 'Created default data directory');
# Add a setting.
qx{echo 'y'|../src/task rc:foo.rc config must_be_unique old};
qx{echo '-- y'|../src/task rc:foo.rc config must_be_unique old};
my $output = qx{../src/task rc:foo.rc show};
like ($output, qr/^must_be_unique\s+old/ms, 'config setting a new value');
qx{echo 'y'|../src/task rc:foo.rc config must_be_unique new};
qx{echo '-- y'|../src/task rc:foo.rc config must_be_unique new};
$output = qx{../src/task rc:foo.rc show};
like ($output, qr/^must_be_unique\s+new/ms, 'config overwriting an existing value');
qx{echo 'y'|../src/task rc:foo.rc config must_be_unique ''};
qx{echo '-- y'|../src/task rc:foo.rc config must_be_unique ''};
$output = qx{../src/task rc:foo.rc show};
like ($output, qr/^must_be_unique/ms, 'config setting a blank value');
qx{echo 'y'|../src/task rc:foo.rc config must_be_unique};
qx{echo '-- y'|../src/task rc:foo.rc config must_be_unique};
$output = qx{../src/task rc:foo.rc show};
unlike ($output, qr/^must_be_unique/ms, 'config removing a value');
# 'report.:b' is designed to get past the config command checks for recognized
# names.
qx{echo 'y'|../src/task rc:foo.rc config -- report.:b +c};
qx{echo '-- y'|../src/task rc:foo.rc config -- report.:b +c};
$output = qx{../src/task rc:foo.rc show};
like ($output, qr/^report\.:b\s+\+c/ms, 'the -- operator is working');
# Make sure the value is accepted if it has multiple words.
qx{echo 'y'|../src/task rc:foo.rc config must_be_unique 'one two three'};
qx{echo '-- y'|../src/task rc:foo.rc config must_be_unique 'one two three'};
$output = qx{../src/task rc:foo.rc show};
like ($output, qr/^must_be_unique\s+one two three/ms, 'config allows multi-word quoted values');
qx{echo 'y'|../src/task rc:foo.rc config must_be_unique one two three};
qx{echo '-- y'|../src/task rc:foo.rc config must_be_unique one two three};
$output = qx{../src/task rc:foo.rc show};
like ($output, qr/^must_be_unique\s+one two three/ms, 'config allows multi-word unquoted values');