X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fblosxom-plugins.git;a=blobdiff_plain;f=scripts%2Factivate-blosxom-include;fp=scripts%2Factivate-blosxom-include;h=2cd8efcc78ce9334903299019e4e62ffc45b9423;hp=0000000000000000000000000000000000000000;hb=cbce1a7a4a591c0aa1d17fc97fdd585981f42e47;hpb=dbb502e98a3da7dd1201510da3182c4d63985d47 diff --git a/scripts/activate-blosxom-include b/scripts/activate-blosxom-include new file mode 100755 index 0000000..2cd8efc --- /dev/null +++ b/scripts/activate-blosxom-include @@ -0,0 +1,60 @@ +#!/usr/bin/perl +# +# Script to activate Blosxom::Include in blosxom plugins, if available +# +# Usage: perl -MBlosxom::Include -e '1' 2>/dev/null && activate-blosxom-include +# + +use strict; +use Getopt::Std; +use IO::File; +use File::Copy; +use Blosxom::Include 0.002; + +my %opts = (); +getopts('Dnq', \%opts); +my $deactivate = $opts{D}; +my $noop = $opts{n}; +my $quiet = $opts{q}; + +my $dir = shift @ARGV || '*'; +for my $pname ( glob $dir ) { + next unless -f $pname; + my $ph = IO::File->new( $pname, 'r' ) + or warn "Cannot open plugin '$pname' for read: $!" and next; + my $plugin = ''; + { + local $/ = undef; + $plugin = <$ph>; + close $ph; + } + next unless $plugin; + next unless $plugin =~ m/__END_CONFIG__/; + if ($deactivate) { + next unless $plugin =~ m/^use\s+Blosxom::Include/m; + } + else { + next if $plugin =~ m/use\s+Blosxom::Include/; + } + print "Updating $pname ...\n" unless $quiet; + unless ($noop) { + my $modified = $plugin; + if ($deactivate) { + $modified =~ s/^use Blosxom::Include[^\n]*\n\s*//mg; + } + else { + $modified =~ s/^([^#])/\nuse Blosxom::Include qw($pname);\n$1/m; + } + next if $plugin eq $modified; + $ph = IO::File->new( "$pname.tmp", 'w' ) + or die "Cannot open plugin '$pname.tmp' for write: $!"; + print $ph $modified + or die "Cannot write to plugin '$pname.tmp': $!"; + close $ph + or die "Cannot close plugin '$pname.tmp': $!"; + move "$pname.tmp", $pname + or die "Cannot move plugin '$pname.tmp' to '$pname': $!"; + } +} +print "Done.\n" unless $quiet; +