aboutsummaryrefslogblamecommitdiffstats
path: root/calendar/dayplan.pl
blob: 3de906aeec2c5b88fdbf4cb1bce728e06f390ac7 (plain) (tree)
1
2
3
4
5
6
7
8
9
               






                             
               
           


                                                                            

                                                     
                          
 




                                                        

                                       


                                   

     

                                         
                            

                                       
 






                                                          
                                               

      
                               


                          
                                               

 

                    






                                    
  


     
                                                             

                                   
 

                              
        








                                                        

                                                                             

   
            
          
         
          
  



                          









                     

                  
 
                     
                       

                                
                                                                                                                                                                                  

     
             





                                                                       
                                   


                              
 
#!/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
";
    }
}

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
Implementation Intentions:

- I will X at HH:MM.

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)
}