f1efb99bd8497211ff9994f8bc25091b1f304cb9
[ical-summary.git] / bin / summary-ics.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4 use Data::ICal;
5 use Getopt::Long;
6 use Date::Manip;
7
8 my $start = undef;
9 my $end   = undef;
10
11 GetOptions(
12  'start' => \$start,
13  'end'   => \$end,
14 );
15
16 $start ||= UnixDate(ParseDate('last month'), '%Y-%m-01');
17 $end   ||= UnixDate(ParseDate('now'), '%Y-%m-01');
18
19 $start = ParseDate($start);
20 $end   = ParseDate($end);
21
22 my $filename = shift;
23
24 die "Please tell me a filename to work on!\n"
25   unless defined $filename;
26 die "I can't find the file: $filename\n"
27   unless -f $filename;
28
29 print "Processing date range: " . UnixDate($start, '%Y-%m-%d') . " - " . UnixDate($end, '%Y-%m-%d') . "\n";
30
31 my $calendar = Data::ICal->new(filename => $filename);
32
33 use Data::Dumper;
34 for my $entry (@{ $calendar->entries() }) {
35     if ($entry->ical_entry_type eq 'VEVENT') {
36       my $summary     = return_property($entry, 'Summary');
37       my $description = return_property($entry, 'Description');
38       my $dtstart     = return_property($entry, 'dtstart');
39       print "event: $summary - $dtstart - $description\n";
40       #print Dumper($entry);
41     } else {
42       print "not event\n";
43     }
44 }
45
46 sub return_property {
47   my $entry = shift;
48   my $property = shift;
49
50   my $properties = $entry->property($property);
51
52   return ""
53     unless defined $properties;
54
55   if (scalar(@{ $properties }) > 0) {
56     return @{ $properties }[0]->value();
57   } else {
58     return "";
59   }
60 }