#!/usr/bin/perl
#
# Wed Oct 3 09:21:33 BST 2007 © Frank Shute.
#
# Copy a prototype letter, name & date it and put it in the file hierarchy.
#
# Usage: letter <letterdir/letter>
#
# E.g: $ letter bank/rbs
#
# will create a template letter under that subdir named:
#
# rbs-03Oct07.tex
use strict;
use warnings;
use File::Copy;
use Env qw(HOME VISUAL);
use Date::Calc qw(Today Month_to_Text);
# Assign some variables.
my $letters_dir="$HOME/latex/letters/";
my $letter_proto="$HOME/latex/protos/letter2.tex";
my $tmp_header_pic="/tmp/shute_org.eps";
my $header_pic="$HOME/latex/headers/shute_org.eps";
my $EDITOR="/usr/local/bin/gvim -geom 80x35";
# Copy header pic to /tmp, if needed.
if (! -e $tmp_header_pic) {
copy("$header_pic", "$tmp_header_pic")||
die "Can't copy $header_pic to $tmp_header_pic: $!\n";
}
my $file_prefix = $ARGV[0] || die "Usage: letter <letterdir/lettername>\n";
my $letter = "$file_prefix" . "\-" . get_date() . ".tex";
my $new_letter = $letters_dir . $letter;
print "Copying $letter_proto to $new_letter\n";
sleep(2);
copy("$letter_proto", "$new_letter") ||
die "Can't copy $letter_proto to $new_letter: $!\n";
my ($year,$month,$day) = Today();
my $day_of_week = $day;
my $month_as_txt = Month_to_Text($month);
my $this_year = $year;
my $letter_date = $month_as_txt . " " . $day_of_week . ", " . $this_year;
# From Cookbook p.244
open(F, "+< $new_letter") or die "can't read $new_letter: $!";
my $out = '';
while (<F>) {
s/^\%\%date /\\date\{$letter_date\} /g;
$out .= $_;
}
seek(F, 0, 0) or die "can't seek to start of $new_letter: $!";
print F $out or die "can't print to $new_letter: $!";
truncate(F, tell(F)) or die "can't truncate $new_letter: $!";
close F or die "can't close $new_letter: $!";
system "$EDITOR $new_letter";
$file_prefix =~ s/\/.*$//;
my $letter_dir = $letters_dir . $file_prefix . "/";
print "$new_letter\n";
print "cd $letter_dir\n";
##-> Subfuncs <-##
# Return todays date formatted. eg: 02Oct07
sub get_date {
my ($year,$month,$day) = Today();
my $day_of_week = $day;
my $month_as_txt = Month_to_Text($month);
my $short_month = substr($month_as_txt, 0, 3);
my $trunc_year = substr($year, 2);
# Format day of week correctly eg: 9 -> 09
if ($day_of_week < 10)
{
$day_of_week = "0" . $day_of_week;
}
my $my_date = $day_of_week . $short_month . $trunc_year;
return $my_date;
}