diff --git a/ChangeLog b/ChangeLog index 1ae988c2f..a499c58ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -31,6 +31,7 @@ Features + New 'modified' attribute, which contains the most recent modification date, if a modification has occurred. + Fixed the mechanism used for selecting translations (thanks to Fidel Mato). + + Added new export script: export-tsv.pl. Bugs + Improved hyphenation by splitting on commas (even if no whitespace after). diff --git a/scripts/add-ons/export-csv.pl b/scripts/add-ons/export-csv.pl index d19b25010..899bac501 100755 --- a/scripts/add-ons/export-csv.pl +++ b/scripts/add-ons/export-csv.pl @@ -74,6 +74,7 @@ for my $task (split /,$/ms, qx{$command}) # annotations # mask # imask + # UDAs } exit 0; diff --git a/scripts/add-ons/export-tsv.pl b/scripts/add-ons/export-tsv.pl new file mode 100755 index 000000000..fd7f63402 --- /dev/null +++ b/scripts/add-ons/export-tsv.pl @@ -0,0 +1,83 @@ +#! /usr/bin/perl +################################################################################ +## taskwarrior - a command line task list manager. +## +## Copyright 2006-2012, Paul Beckingham, Federico Hernandez. +## +## Permission is hereby granted, free of charge, to any person obtaining a copy +## of this software and associated documentation files (the "Software"), to deal +## in the Software without restriction, including without limitation the rights +## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +## copies of the Software, and to permit persons to whom the Software is +## furnished to do so, subject to the following conditions: +## +## The above copyright notice and this permission notice shall be included +## in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +## OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +## THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +## SOFTWARE. +## +## http://www.opensource.org/licenses/mit-license.php +## +################################################################################ + +use strict; +use warnings; + +# Give a nice error if the (non-standard) JSON module is not installed. +eval "use JSON"; +if ($@) +{ + print "Error: You need to install the JSON Perl module.\n"; + exit 1; +} + +# Use the taskwarrior 2.0+ export command to filter and return JSON +my $command = join (' ', ("env PATH=$ENV{PATH} task export", @ARGV)); +if ($command =~ /No matches/) +{ + printf STDERR $command; + exit 1; +} + +# Generate output. +print "uuid\tstatus\ttags\tentry\tstart\tdue\trecur\tend\tproject\t", + "priority\tfg\tbg\tdescription\n"; + +for my $task (split /,$/ms, qx{$command}) +{ + my $data = from_json ($task); + + print "$data->{'uuid'}\t", + "$data->{'status'}\t", + (exists $data->{'tags'} ? join (' ', @{$data->{'tags'}}) : ''), "\t", + "$data->{'entry'}\t", + ($data->{'start'} || ''), "\t", + ($data->{'due'} || ''), "\t", + ($data->{'recur'} || ''), "\t", + ($data->{'end'} || ''), "\t", + ($data->{'project'} || ''), "\t", + ($data->{'priority'} || ''), "\t", + ($data->{'fg'} || ''), "\t", + ($data->{'bg'} || ''), "\t", + "$data->{'description'}", + "\n"; + + # Note that this format ignores: + # wait + # until + # annotations + # mask + # imask + # UDAs +} + +exit 0; + +################################################################################ +