aboutsummaryrefslogtreecommitdiffstats
path: root/dayplan.pl
blob: 3074c2d70693b633fc8a150ca25af994feac884d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/usr/bin/perl
# Porting dayplan.ksh to Perl

use strict;
use warnings;
use DateTime;


my @quicknotes;
my @qfiles;
my ($dt, $d, $y, $m, $weekday);

my @weekdays = qw(Monday Tuesday Wednesday Thursday Friday Saturday Sunday);
my $dayplans = '/home/lemon/Notes/journal/day_plans';
#my $dayplans = '/tmp';
my $numargs  = $#ARGV + 1;


# Go back and get short notes from past files
foreach my $f (glob("$dayplans/*.txt")) {
    open my $fh, "<", $f or die "Cannot open that file";
    while (<$fh>) {
        if ($_ =~ /^(- \w.*)$/) { 
            push @quicknotes => "$1\n";
            push @qfiles => "$f\n";
        };

    }
}
# deduplicate stuff
my %riddups = map { $_, "" } @quicknotes;
@quicknotes = keys %riddups;
my %riddfiles = map { $_, "" } @qfiles;
@qfiles = keys %riddfiles;

if ($numargs == 1) {
    ($y, $m, $d) = $ARGV[0] =~ /(\d\d\d\d)-(\d\d)-(\d\d)/;
    $dt = DateTime->new(
        year  => $y,
        month => $m,
        day   => $d
    );
    $weekday = $weekdays[$dt->day_of_week - 1];
}
else {
    $dt      = DateTime->today;
    $d       = $dt->day;
    $m       = $dt->month;
    $y       = $dt->year;
    $weekday = $weekdays[$dt->day_of_week - 1];
}

sub schoollines {
    my $day = shift;
    if ($day =~ /Saturday|Sunday/) {
        return "";
    } else
    {
        return "
08:15 - 08:20 - Harvey to school
08:45 - 09:00 - Sophie to school
09:15 - 09:30 - Email";
    }
}

my $reminders = qx(ssh bobbins remind ~/.reminders $y-$m-$d);
$reminders =~ s/\s{2,}/\n/gs;
$reminders =~ s/^Reminders.+\:\n//;

my $s = schoollines($weekday);

$" = "";

my $qnote_block;
if (scalar @quicknotes == 0) {
    $qnote_block = "No quicknotes today.\n";
} else
{
    $qnote_block = "@quicknotes"."from:"."\n"."@qfiles";
}

my $mname = $dt->month_name;
my $template = "Goal for $weekday $d $mname $y: [replace this with your goal]
---

$qnote_block
Reminders:
---------
$reminders
$s
09:30 - 10:00 - 
10:00 - 11:00 - 
11:00 - 12:00 - 
12:15 - 13:00 - Lunch
13:00 - 14:00 - 
14:00 - 15:00 -
15:00 - 16:00 - 
16:00 - 17:00 -
";

sub write_file {
    my $f = shift;

    open( FH, ">$f");
    print FH $template;
    my $today = DateTime->today;
    if ($today != $dt) {
        printf (FH "\nWARNING: This dayplan was generated in advance on %d-%02d-%d. Reminders and quicknotes may not be up to date.", $today->year,  $today->month,  $today->day);
    }
    
    close FH;
    exec("vim", "$f");
}

my $today_planner = sprintf("%s/%d-%02d-%02d.txt", $dayplans,$y,$m,$d);

if (-e $today_planner) {
    exec("vim",  "$today_planner");
} else
{
    write_file($today_planner)
}