Import historic posters from /users/posters on caffeine.
[mspang/posters-archive.git] / bin / publicize
1 #!/opt/bin/perl
2 ## publicize - 28 May 1994 - Ian Goldberg
3 ##
4 ## Sends the files produced by runoff to good homes
5
6 ## Customization: defaults
7 $defnewsgroups = "uw.csc,uw.general,uw.talks,uw.math.ugrad,uw.cs.ugrad";
8 $defuser = "vp";
9 #$defprinter = "ljm";
10
11 ## Get an input filename on the command line
12 if ($#ARGV == -1)
13 {
14         @ARGV = <*.tex>;
15   for(@ARGV){ s/\.tex$//; }
16 }
17
18 die "Usage: $0 filename*\n" unless $#ARGV > -1;
19 while(defined($filename=shift)){
20
21 ## Strip any . at the end of filename
22 $filename =~ s/\.$//g;
23
24 ## Check if it's of a type we can use by suffix
25 if ($filename =~ /\.(ps|txt|html|htblurb)$/)
26 {
27         ## Make sure it's readable
28         if (-f "$filename" && -r "$filename")
29         {
30                 &Publicize($filename);
31         }
32         else
33         {
34                 die "$filename is not readable\n";
35         }
36 }
37 else
38 {
39         ## Try each known suffix
40   foreach $suffix ('.ps', '.today.ps', '.txt', '.html', '.htblurb')
41 # foreach $suffix ('.txt', '.html', '.htblurb')
42         {
43                 ## If this suffix produces a readable file, publicize it
44                 if (-f "$filename$suffix" && -r "$filename$suffix")
45                 {
46                         &Publicize($filename.$suffix);
47                 }
48                 else
49                 {
50                         warn "$filename$suffix is not readable\n";
51                 }
52         }
53         #if (-f "$filename.ps" && -r "$filename.today.ps" &&
54         #    -f "$filename.today.ps" && -r "$filename.today.ps") {
55         #       ## do the double poster thingy
56         #       &Publicize_double($filename);
57         #} else {
58         #       ## do whichever of the .today.ps and the .ps files are
59         #       ## available
60         #       foreach $suffix ('.ps', '.today.ps')
61         #       {
62         #               ## If this suffix produces a readable file, publicize it
63         #               if (-f "$filename$suffix" && -r "$filename$suffix")
64         #               {
65         #                       &Publicize($filename.$suffix);
66         #               }
67         #               else
68         #               {
69         #                       warn "$filename$suffix is not readable\n";
70         #               }
71         #       }
72         #}
73                         
74 }
75 }
76
77 ## Publicize a readable file
78 sub Publicize
79 {
80         $_[0] =~ /\.(ps|txt|html|htblurb)$/;
81         $type = $1;
82         ## What kind is it?
83         if ($type eq "ps")
84         {
85                 &Publicizeps($_[0]);
86         }
87         elsif ($type eq "txt")
88         {
89                 &Publicizetxt($_[0]);
90         }
91         elsif ($type eq "html")
92         {
93                 &Publicizehtml($_[0]);
94         }
95         elsif ($type eq "htblurb")
96         {
97                 &Publicizehtblurb($_[0]);
98         }
99         else
100         {
101                 warn "Unknown file type: $_[0]\n";
102         }
103 }
104
105 ## Publicize a file of a specific type.
106 ## Below are ps, txt, html, htblurb
107
108 sub Publicizeps
109 {
110         local($fn) = $_[0];
111         print "Printing $fn on ps_mfcf as csc\@math...\n";
112   print "What user ($defuser): ";
113         $user = <STDIN>;
114         $user =~ s/\s//g;
115         $user = $defuser unless $user =~ /\S/;
116         system("/opt/local/mathlpr/bin/mathlpr $user < $fn");
117 }
118
119 sub Publicize_double
120 {
121         local($fn) = $_[0];
122         print "Printing $fn.{today.ps,ps} on ps_mfcf as csc\@math...\n";
123         #print "What printer ($defprinter): ";
124         #$printer = <STDIN>;
125         #$printer =~ s/\s//g;
126         #$printer = $defprinter unless $printer =~ /\S/;
127         system("cat $fn.ps $fn.today.ps | /opt/local/mathlpr/bin/mathlpr -");
128 }
129
130 sub Publicizetxt
131 {
132         local($fn) = $_[0];
133         print "Posting $fn to Usenet...\n";
134         print "Newsgroups ($defnewsgroups): ";
135         $newsgroups = <STDIN>;
136         $newsgroups =~ s/\s//g;
137         $newsgroups = $defnewsgroups unless $newsgroups =~ /\S/;
138         $headers = "Newsgroups: $newsgroups\n";
139         $headers .= "From: csc\@math.uwaterloo.ca (Computer Science Club)\n";
140         $headers .= "Followup-To: uw.csc\n";
141         print "Subject: ";
142         $subject = <STDIN>;
143         ## Note: $subject already ends in \n
144         $headers .= "Subject: $subject\n";
145         #open(INJ, "|/opt/innd/news/inews -h");
146         $ENV{'NNTPSERVER'} = "news.math.uwaterloo.ca";
147         open(INJ, "|-") || exec( "/opt/trn/bin/inews", "-h");
148         print INJ $headers;
149         open(TXT, $fn);
150         print INJ <TXT>;
151         close(TXT);
152         close(INJ);
153 }
154
155 sub Publicizehtml
156 {
157         local($fn) = $_[0];
158         print "Copying $fn to events directory...\n";
159         open(INPUT, $fn) || warn "Cannot read $fn: $!\n";
160         open(EVENTS, ">/u/www/www/events/$fn") ||
161                 warn "Cannot write to events directory: $!\n";
162         print EVENTS <INPUT>;
163         close(EVENTS);
164         close(INPUT);
165         chmod 0764, "/u/www/www/events/$fn";
166   system "chgrp www \"/u/www/www/events/$fn\";"
167 }
168
169 sub Publicizehtblurb
170 {
171         local($fn) = $_[0];
172         print "Mailing calendar blurb to www\@csclub...\n";
173         system("mailx -s 'Blurb for Upcoming Events' www\@csclub < $fn");
174 }