[BACK]Return to todo.pl CVS log [TXT][DIR] Up to [local] / todotxt / Text-Todo / bin

Diff for /todotxt/Text-Todo/bin/todo.pl between version 1.6 and 1.12

version 1.6, 2010/01/10 23:54:26 version 1.12, 2010/01/11 01:41:21
Line 1 
Line 1 
 #!/usr/bin/perl  #!/usr/bin/perl
 # $RedRiver: todo.pl,v 1.5 2010/01/10 23:37:12 andrew Exp $  # $RedRiver: todo.pl,v 1.9 2010/01/11 00:17:38 andrew Exp $
 ########################################################################  ########################################################################
 # todo.pl *** a perl version of todo.sh. Uses Text::Todo.  # todo.pl *** a perl version of todo.sh. Uses Text::Todo.
 #  #
Line 103 
Line 103 
 }  }
   
 sub add {  sub add {
     my ( $config, $entry ) = @_;      my ( $config, @entry ) = @_;
     if ( !$entry ) {      if ( !@entry ) {
         die "usage: todo.pl add 'item'\n";          die "usage: todo.pl add 'item'\n";
     }      }
   
       my $entry = join q{ }, @entry;
   
     my $todo = Text::Todo->new($config);      my $todo = Text::Todo->new($config);
     if ( $todo->add($entry) ) {      if ( $todo->add($entry) ) {
         my @list  = $todo->list;          my @list  = $todo->list;
Line 121 
Line 123 
 }  }
   
 sub addto {  sub addto {
     my ( $config, $file, $entry ) = @_;      my ( $config, $file, @entry ) = @_;
     if ( !( $file && $entry ) ) {      if ( !( $file && @entry ) ) {
         die "usage: todo.pl addto DEST 'TODO ITEM'\n";          die "usage: todo.pl addto DEST 'TODO ITEM'\n";
     }      }
   
       my $entry = join q{ }, @entry;
   
     my $todo = Text::Todo->new($config);      my $todo = Text::Todo->new($config);
   
     $file = $todo->file($file);      $file = $todo->file($file);
Line 141 
Line 145 
 }  }
   
 sub append {  sub append {
     my ( $config, $line, $text ) = @_;      my ( $config, $line, @text ) = @_;
     if ( !( $line && $text && $line =~ /^\d+$/xms ) ) {      if ( !( $line && @text && $line =~ /^\d+$/xms ) ) {
         die 'usage: todo.pl append ITEM# "TEXT TO APPEND"' . "\n";          die 'usage: todo.pl append ITEM# "TEXT TO APPEND"' . "\n";
     }      }
   
       my $text = join q{ }, @text;
   
     my $todo  = Text::Todo->new($config);      my $todo  = Text::Todo->new($config);
     my $entry = $todo->list->[ $line - 1 ];      my $entry = $todo->list->[ $line - 1 ];
   
Line 155 
Line 161 
     die "Unable to append\n";      die "Unable to append\n";
 }  }
   
 sub archive {  sub archive {
     my ( $config ) = @_;      my ($config) = @_;
     my $todo = Text::Todo->new($config);      my $todo = Text::Todo->new($config);
   
     my $file = $todo->file;      my $file = $todo->file;
   
     my $archived = $todo->archive;      my $archived = $todo->archive;
     if (defined $archived) {      if ( defined $archived ) {
         return print "TODO: $file archived.\n";          return print "TODO: $file archived.\n";
     }      }
     die "Unable to archive $file\n";      die "Unable to archive $file\n";
 }  }
   
 sub command   { return &unsupported }  sub command { return &unsupported }
   
 sub del {  sub del {
     my ( $config, $line ) = @_;      my ( $config, $line ) = @_;
     if ( !( $line && $line =~ /^\d+$/xms ) ) {      if ( !( $line && $line =~ /^\d+$/xms ) ) {
         die 'usage: todo.pl del ITEM#' . "\n";          die 'usage: todo.pl del ITEM#' . "\n";
     }      }
     my $todo = Text::Todo->new($config);      my $todo = Text::Todo->new($config);
   
     my $entry = $todo->list->[$line - 1];      my $entry = $todo->list->[ $line - 1 ];
     print "Delete '" . $entry->text . "'?  (y/n)\n";      print "Delete '" . $entry->text . "'?  (y/n)\n";
     warn "XXX No delete confirmation currently!\n";      warn "XXX No delete confirmation currently!\n";
   
     if ($opts{n}) {      if ( $opts{n} ) {
         if ($todo->del($entry) && $todo->save) {          if ( $todo->del($entry) && $todo->save ) {
             return print 'TODO: \'', $entry->text, "' deleted.\n";              return print 'TODO: \'', $entry->text, "' deleted.\n";
         }          }
     }      }
     else {      else {
         my $text = $entry->text;          my $text = $entry->text;
         if ($entry->replace(q{}) && $todo->save) {          if ( $entry->replace(q{}) && $todo->save ) {
             return print 'TODO: \'', $text, "' deleted.\n";              return print 'TODO: \'', $text, "' deleted.\n";
         }          }
     }      }
Line 196 
Line 202 
     die "Unable to delete entry\n";      die "Unable to delete entry\n";
 }  }
   
 sub depri     { return &unsupported }  sub depri {
 sub mark_done { return &unsupported }      my ( $config, $line ) = @_;
       if ( !( $line && $line =~ /^\d+$/xms ) ) {
           die 'usage: todo.pl depri ITEM#' . "\n";
       }
       my $todo = Text::Todo->new($config);
   
       my $entry = $todo->list->[ $line - 1 ];
       if ( $entry->depri && $todo->save ) {
           return print $line, ': ', $entry->text, "\n",
               'TODO: ', $line, " deprioritized.\n";
       }
       die "Unable to deprioritize entry\n";
   }
   
   # since "do" is reserved
   sub mark_done {
       my ( $config, $line ) = @_;
       if ( !( $line && $line =~ /^\d+$/xms ) ) {
           die 'usage: todo.pl del ITEM#' . "\n";
       }
       my $todo = Text::Todo->new($config);
   
       my $entry = $todo->list->[ $line - 1 ];
   
       if ( $entry->do && $todo->save ) {
           my $status = print $line, ': ', $entry->text, "\n",
               'TODO: ', $line, " marked as done.\n";
           if (!$opts{a}) {
               return archive($config);
           }
           return $status;
       }
       die "Unable to mark as done\n";
   }
   
 sub help      { return &unsupported }  sub help      { return &unsupported }
   
 sub list {  sub list {
Line 275 
Line 315 
     return print map {"\+$_\n"} $todo->listproj;      return print map {"\+$_\n"} $todo->listproj;
 }  }
   
 sub move    { return &unsupported }  sub move { return &unsupported }
 sub prepend { return &unsupported }  
 sub pri     { return &unsupported }  sub prepend {
       my ( $config, $line, @text ) = @_;
       if ( !( $line && @text && $line =~ /^\d+$/xms ) ) {
           die 'usage: todo.pl prepend ITEM# "TEXT TO PREPEND"' . "\n";
       }
   
       my $text = join q{ }, @text;
   
       my $todo  = Text::Todo->new($config);
       my $entry = $todo->list->[ $line - 1 ];
   
       if ( $entry->prepend($text) && $todo->save ) {
           return printf "%02d: %s\n", $line, $entry->text;
       }
       die "Unable to prepend\n";
   }
   
   sub pri {
       my ( $config, $line, $priority ) = @_;
       my $error = 'usage: todo.pl pri ITEM# PRIORITY';
       if ( !( $line && $line =~ /^\d+$/xms && $priority ) ) {
           die $error;
       }
       if ( $priority !~ /^[A-Z]$/xms ) {
           die $error . "\n"
               . "note: PRIORITY must a single letter from A to Z.\n";
       }
   
       my $todo = Text::Todo->new($config);
   
       my $entry = $todo->list->[ $line - 1 ];
       if ( $entry->pri($priority) && $todo->save ) {
           return print $line, ': ', $entry->text, "\n",
               'TODO: ', $line, ' prioritized (', $entry->priority, ").\n";
       }
       die "Unable to prioritize entry\n";
   }
   
 sub replace { return &unsupported }  sub replace { return &unsupported }
 sub report  { return &unsupported }  sub report  { return &unsupported }
   
Line 293 
Line 370 
     $term = defined $term ? quotemeta($term) : '';      $term = defined $term ? quotemeta($term) : '';
   
     my $shown = 0;      my $shown = 0;
     my @sorted      my @sorted = map { sprintf "%02d %s", $_->{line}, $_->{entry}->text }
         = map { sprintf "%02d %s", $_->{line}, $_->{entry}->text }  
         sort { lc $a->{entry}->text cmp lc $b->{entry}->text } @list;          sort { lc $a->{entry}->text cmp lc $b->{entry}->text } @list;
   
     foreach my $line ( grep {/$term/xms} @sorted ) {      foreach my $line ( grep {/$term/xms} @sorted ) {
Line 366 
Line 442 
     my ($file) = @_;      my ($file) = @_;
   
     my %config;      my %config;
     open my $fh, '< ', $file or die "Unable to open [$file]: $!";      open my $fh, '<', $file or die "Unable to open [$file] : $!";
 LINE: while (<$fh>) {  LINE: while (<$fh>) {
         s/\r?\n$//xms;          s/\r?\n$//xms;
         s/\s*\#.*$//xms;          s/\s*\#.*$//xms;

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.12

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>