Verbosity

- Added 'affected' verbosity token.
- Deprecated 'rc.echo.command'.
- Updated config defaults.
- Labelled all deprecated 'echo.command' references with '// Deprecated 2.0'
- Added unit tests to start the verbosity testing.  Not complete.
- Updated taskrc.5 man page.
This commit is contained in:
Paul Beckingham 2011-10-01 11:16:12 -04:00
parent de481a7eba
commit 78f91ffa91
19 changed files with 109 additions and 30 deletions

1
NEWS
View file

@ -70,6 +70,7 @@ Newly deprecated features in taskwarrior 2.0.0
- The 'next' configuration variable has been removed. - The 'next' configuration variable has been removed.
- Use of 'fg:' and 'bg:' attributes are deprecated. - Use of 'fg:' and 'bg:' attributes are deprecated.
- Use of 'echo.command' configuration variable.
--- ---

View file

@ -233,7 +233,7 @@ for safety.
.B echo.command=yes .B echo.command=yes
May be "yes" or "no", and causes the display of the ID and description of any May be "yes" or "no", and causes the display of the ID and description of any
task when you run the start, stop, do, undo or delete commands. The default task when you run the start, stop, do, undo or delete commands. The default
value is "yes". value is "yes". Deprecated - use verbosity token 'affected'.
.TP .TP
.B annotations=full .B annotations=full

View file

@ -81,9 +81,9 @@ std::string Config::_defaults =
"verbose=yes # Provide maximal feedback\n" "verbose=yes # Provide maximal feedback\n"
"#verbose=no # Provide minimal feedback\n" "#verbose=no # Provide minimal feedback\n"
"#verbose=list # Comma-separated list. May contain any subset of:\n" "#verbose=list # Comma-separated list. May contain any subset of:\n"
"#verbose=blank,header,footnote,label,new-id\n" "#verbose=blank,header,footnote,label,new-id,affected\n"
"confirmation=yes # Confirmation on delete, big changes\n" "confirmation=yes # Confirmation on delete, big changes\n"
"echo.command=yes # Details on command just run\n" "echo.command=yes # Details on command just run. Deprecated\n"
"annotations=full # Level of verbosity for annotations: full, sparse or none\n" "annotations=full # Level of verbosity for annotations: full, sparse or none\n"
"indent.annotation=2 # Indent spaces for annotations\n" "indent.annotation=2 # Indent spaces for annotations\n"
"indent.report=0 # Indent spaces for whole report\n" "indent.report=0 # Indent spaces for whole report\n"

View file

@ -391,10 +391,8 @@ bool Context::verbose (const std::string& token)
split (verbosity, config.get ("verbose"), ','); split (verbosity, config.get ("verbose"), ',');
} }
if (verbosity_legacy) if (verbosity_legacy ||
return true; std::find (verbosity.begin (), verbosity.end (), token) != verbosity.end ())
if (std::find (verbosity.begin (), verbosity.end (), token) != verbosity.end ())
return true; return true;
return false; return false;

View file

@ -87,7 +87,8 @@ int CmdAnnotate::execute (std::string& output)
context.tdb2.modify (*task); context.tdb2.modify (*task);
++count; ++count;
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format (STRING_CMD_ANNO_DONE, out << format (STRING_CMD_ANNO_DONE,
task->id, task->id,
task->get ("description")) task->get ("description"))
@ -98,7 +99,8 @@ int CmdAnnotate::execute (std::string& output)
context.tdb2.commit (); context.tdb2.commit ();
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format ((count == 1 out << format ((count == 1
? STRING_CMD_ANNO_SUMMARY ? STRING_CMD_ANNO_SUMMARY
: STRING_CMD_ANNO_SUMMARY_N), : STRING_CMD_ANNO_SUMMARY_N),

View file

@ -98,7 +98,8 @@ int CmdAppend::execute (std::string& output)
{ {
context.tdb2.modify (*sibling); context.tdb2.modify (*sibling);
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format (STRING_CMD_APPEND_DONE, sibling->id) out << format (STRING_CMD_APPEND_DONE, sibling->id)
<< "\n"; << "\n";
@ -113,7 +114,8 @@ int CmdAppend::execute (std::string& output)
context.tdb2.commit (); context.tdb2.commit ();
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format ((count == 1 out << format ((count == 1
? STRING_CMD_APPEND_SUMMARY ? STRING_CMD_APPEND_SUMMARY
: STRING_CMD_APPEND_SUMMARY_N), : STRING_CMD_APPEND_SUMMARY_N),

View file

@ -112,8 +112,8 @@ int CmdDelete::execute (std::string& output)
context.tdb2.modify (*sibling); context.tdb2.modify (*sibling);
++count; ++count;
// TODO Feedback. if (context.verbose ("affected") ||
if (context.config.getBoolean ("echo.command")) context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format (STRING_CMD_DELETE_RECURRING, out << format (STRING_CMD_DELETE_RECURRING,
sibling->id, sibling->id,
sibling->get ("description")) sibling->get ("description"))
@ -156,7 +156,8 @@ int CmdDelete::execute (std::string& output)
context.tdb2.modify (*task); context.tdb2.modify (*task);
++count; ++count;
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format (STRING_CMD_DELETE_DELETING, out << format (STRING_CMD_DELETE_DELETING,
task->id, task->id,
task->get ("description")) task->get ("description"))

View file

@ -121,7 +121,8 @@ int CmdDenotate::execute (std::string& output)
{ {
++count; ++count;
context.tdb2.modify (*task); context.tdb2.modify (*task);
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format (STRING_CMD_DENO_FOUND, anno) out << format (STRING_CMD_DENO_FOUND, anno)
<< "\n"; << "\n";
} }

View file

@ -93,7 +93,8 @@ int CmdDone::execute (std::string& output)
context.tdb2.modify (*task); context.tdb2.modify (*task);
++count; ++count;
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format (STRING_CMD_DONE_COMPLETED, task->id, task->get ("description")) out << format (STRING_CMD_DONE_COMPLETED, task->id, task->get ("description"))
<< "\n"; << "\n";
@ -117,7 +118,8 @@ int CmdDone::execute (std::string& output)
context.tdb2.commit (); context.tdb2.commit ();
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format ((count == 1 out << format ((count == 1
? STRING_CMD_DONE_MARKED ? STRING_CMD_DONE_MARKED
: STRING_CMD_DONE_MARKED_N), : STRING_CMD_DONE_MARKED_N),

View file

@ -93,7 +93,8 @@ int CmdDuplicate::execute (std::string& output)
context.tdb2.add (dup); context.tdb2.add (dup);
++count; ++count;
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format (STRING_CMD_DUPLICATE_DONE, out << format (STRING_CMD_DUPLICATE_DONE,
task->id, task->id,
task->get ("description")) task->get ("description"))

View file

@ -284,7 +284,7 @@ int CmdInfo::execute (std::string& output)
view.set (row, 1, entry + " (" + age + ")"); view.set (row, 1, entry + " (" + age + ")");
// fg TODO deprecated // fg TODO deprecated 2.0
std::string color = task->get ("fg"); std::string color = task->get ("fg");
if (color != "") if (color != "")
{ {
@ -293,7 +293,7 @@ int CmdInfo::execute (std::string& output)
view.set (row, 1, color); view.set (row, 1, color);
} }
// bg TODO deprecated // bg TODO deprecated 2.0
color = task->get ("bg"); color = task->get ("bg");
if (color != "") if (color != "")
{ {

View file

@ -69,7 +69,8 @@ int CmdLog::execute (std::string& output)
context.footnote (onProjectChange (task)); context.footnote (onProjectChange (task));
context.tdb2.commit (); context.tdb2.commit ();
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
output = std::string (STRING_CMD_LOG_LOGGED) + "\n"; output = std::string (STRING_CMD_LOG_LOGGED) + "\n";
return rc; return rc;

View file

@ -165,7 +165,8 @@ int CmdModify::execute (std::string& output)
context.tdb2.commit (); context.tdb2.commit ();
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
{ {
if (count == 1) if (count == 1)
out << format (STRING_CMD_MODIFY_TASK, count) << "\n"; out << format (STRING_CMD_MODIFY_TASK, count) << "\n";

View file

@ -98,7 +98,8 @@ int CmdPrepend::execute (std::string& output)
context.tdb2.modify (*sibling); context.tdb2.modify (*sibling);
++changes; ++changes;
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format (STRING_CMD_PREPEND_DONE, sibling->id) out << format (STRING_CMD_PREPEND_DONE, sibling->id)
<< "\n"; << "\n";
@ -113,7 +114,8 @@ int CmdPrepend::execute (std::string& output)
context.tdb2.commit (); context.tdb2.commit ();
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format ((count == 1 out << format ((count == 1
? STRING_CMD_PREPEND_SUMMARY ? STRING_CMD_PREPEND_SUMMARY
: STRING_CMD_PREPEND_SUMMARY_N), : STRING_CMD_PREPEND_SUMMARY_N),

View file

@ -143,7 +143,7 @@ int CmdShow::execute (std::string& output)
" displayweeknumber" " displayweeknumber"
" dom" " dom"
" due" " due"
" echo.command" " echo.command" // Deprecated 2.0
" edit.verbose" " edit.verbose"
" editor" " editor"
" exit.on.missing.db" " exit.on.missing.db"

View file

@ -93,7 +93,8 @@ int CmdStart::execute (std::string& output)
context.tdb2.modify (*task); context.tdb2.modify (*task);
++count; ++count;
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format (STRING_CMD_START_DONE, out << format (STRING_CMD_START_DONE,
task->id, task->id,
task->get ("description")) task->get ("description"))

View file

@ -92,7 +92,8 @@ int CmdStop::execute (std::string& output)
context.tdb2.modify (*task); context.tdb2.modify (*task);
++count; ++count;
if (context.config.getBoolean ("echo.command")) if (context.verbose ("affected") ||
context.config.getBoolean ("echo.command")) // Deprecated 2.0
out << format (STRING_CMD_STOP_DONE, out << format (STRING_CMD_STOP_DONE,
task->id, task->id,
task->get ("description")) task->get ("description"))

View file

@ -526,9 +526,9 @@ const std::string decode (const std::string& value)
// Support for deprecated encodings. These cannot be removed or old files // Support for deprecated encodings. These cannot be removed or old files
// will not be parsable. Not just old files - completed.data can contain // will not be parsable. Not just old files - completed.data can contain
// tasks formatted/encoded using these. // tasks formatted/encoded using these.
str_replace (modified, "&squot;", "'"); str_replace (modified, "&squot;", "'"); // Deprecated 2.0
str_replace (modified, "&comma;", ","); str_replace (modified, "&comma;", ","); // Deprecated 2.0
str_replace (modified, "&colon;", ":"); str_replace (modified, "&colon;", ":"); // Deprecated 2.0
return modified; return modified;
} }

65
test/verbose.t Executable file
View file

@ -0,0 +1,65 @@
#! /usr/bin/perl
################################################################################
## taskwarrior - a command line task list manager.
##
## Copyright 2006 - 2011, Paul Beckingham, Federico Hernandez.
## All rights reserved.
##
## This program is free software; you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free Software
## Foundation; either version 2 of the License, or (at your option) any later
## version.
##
## This program is distributed in the hope that it will be useful, but WITHOUT
## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
## FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
## details.
##
## You should have received a copy of the GNU General Public License along with
## this program; if not, write to the
##
## Free Software Foundation, Inc.,
## 51 Franklin Street, Fifth Floor,
## Boston, MA
## 02110-1301
## USA
##
################################################################################
use strict;
use warnings;
use Test::More tests => 4;
# Create the rc file.
if (open my $fh, '>', 'verbose.rc')
{
print $fh "data.location=.\n",
"echo.command=off\n";
close $fh;
ok (-r 'verbose.rc', 'Created verbose.rc');
}
# Verbosity: 'affected'
my $output = qx{../src/task rc:verbose.rc log foo rc.verbose:on};
like ($output, qr/Logged task/, '\'affected\' verbosity good');
$output = qx{../src/task rc:verbose.rc log bar rc.verbose:off};
unlike ($output, qr/Logged task/, '\'affected\' verbosity good');
# TODO Verbosity: 'new-id'
# TODO Verbosity: 'blank'
# TODO Verbosity: 'label'
# TODO Verbosity: 'header'
# TODO Verbosity: 'footer'
# Cleanup.
unlink qw(pending.data completed.data undo.data backlog.data synch.key verbose.rc);
ok (! -r 'pending.data' &&
! -r 'completed.data' &&
! -r 'undo.data' &&
! -r 'backlog.data' &&
! -r 'synch.key' &&
! -r 'verbose.rc', 'Cleanup');
exit 0;