Add initial activate-blosxom-include and globalise-config-variables scripts.
[blosxom-plugins.git] / scripts / activate-blosxom-include
blob2cd8efcc78ce9334903299019e4e62ffc45b9423
1 #!/usr/bin/perl
2 #
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>
8 use strict;
9 use Getopt::Std;
10 use IO::File;
11 use File::Copy;
12 use Blosxom::Include 0.002;
14 my %opts = ();
15 getopts('Dnq', \%opts);
16 my $deactivate = $opts{D};
17 my $noop = $opts{n};
18 my $quiet = $opts{q};
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;
25 my $plugin = '';
27 local $/ = undef;
28 $plugin = <$ph>;
29 close $ph;
31 next unless $plugin;
32 next unless $plugin =~ m/__END_CONFIG__/;
33 if ($deactivate) {
34 next unless $plugin =~ m/^use\s+Blosxom::Include/m;
36 else {
37 next if $plugin =~ m/use\s+Blosxom::Include/;
39 print "Updating $pname ...\n" unless $quiet;
40 unless ($noop) {
41 my $modified = $plugin;
42 if ($deactivate) {
43 $modified =~ s/^use Blosxom::Include[^\n]*\n\s*//mg;
45 else {
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: $!";
51 print $ph $modified
52 or die "Cannot write to plugin '$pname.tmp': $!";
53 close $ph
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;