3 # Script to activate Blosxom::Include in blosxom plugins, if available
5 # Usage: perl -MBlosxom::Include -e '1' 2>/dev/null && activate-blosxom-include <dir>
12 use Blosxom::Include 0.002;
15 getopts('Dnq', \%opts);
16 my $deactivate = $opts{D};
20 my $dir = shift @ARGV || '*';
21 for my $pname ( glob $dir ) {
22 next unless -f $pname;
23 my $ph = IO::File->new( $pname, 'r' )
24 or warn "Cannot open plugin '$pname' for read: $!" and next;
32 next unless $plugin =~ m/__END_CONFIG__/;
34 next unless $plugin =~ m/^use\s+Blosxom::Include/m;
37 next if $plugin =~ m/use\s+Blosxom::Include/;
39 print "Updating $pname ...\n" unless $quiet;
41 my $modified = $plugin;
43 $modified =~ s/^use Blosxom::Include[^\n]*\n\s*//mg;
46 $modified =~ s/^([^#])/\nuse Blosxom::Include qw($pname);\n$1/m;
48 next if $plugin eq $modified;
49 $ph = IO::File->new( "$pname.tmp", 'w' )
50 or die "Cannot open plugin '$pname.tmp' for write: $!";
52 or die "Cannot write to plugin '$pname.tmp': $!";
54 or die "Cannot close plugin '$pname.tmp': $!";
55 move "$pname.tmp", $pname
56 or die "Cannot move plugin '$pname.tmp' to '$pname': $!";
59 print "Done.\n" unless $quiet;