#!/usr/bin/env perl use POSIX qw/strftime/; open OUT, '>', '/tmp/script-debug'; my $old_fd = select OUT; $| = 1; my $TASK_CMD = "/usr/local/bin/task"; my $MAIL_CMD = "/usr/sbin/sendmail"; my $today = strftime "%Y-%m-%d", localtime; my $mail_head = "Task warrior daily report - $today"; my $mail_body = "$mail_head\n"; print OUT "running $TASK_CMD minimal due:today\n"; my @task_list = `$TASK_CMD minimal due:today`; print OUT "got results: ", scalar(@task_list), "\n"; # no tasks if ($? != 0) { exit; } # the first row is a header, trash it pop @task_list; my %tasks; foreach (@task_list) { print OUT "working with line: $_"; chomp; # a task is in form ' ' next unless /\s*(\d+)\s*(.+)/; $tasks{$1} = $2; $mail_body .= sprintf "%03d\t%s\n", $1, $2; } $mail_body .= "\n\n*** Detailed task list follows ***\n"; foreach my $k (sort keys %tasks) { print OUT "adding $TASK_CMD info $k\n"; $mail_body .= `$TASK_CMD info $k`; } print OUT "about to mail the output; mail body has ", length($mail_body), " bytes\n"; close OUT; # send out e-mail open MAIL, "|$MAIL_CMD gahr\@gahr.ch"; print MAIL "From: taskwarrior\@gahr.ch\n"; print MAIL "To: gahr\@gahr.ch\n"; print MAIL "Subject: $mail_head\n\n"; print MAIL "$mail_body"; close MAIL;