crowbar/crowbar-core

View on GitHub
chef/cookbooks/apache2/files/default/apache2_module_conf_generate.pl

Summary

Maintainability
Test Coverage
#!/usr/bin/perl

=begin

Generates Ubuntu style module.load files.
 
./apache2_module_conf_generate.pl /usr/lib64/httpd/modules /etc/httpd/mods-available

ARGV[0] is the apache modules directory, ARGV[1] is where you want 'em.

=cut

use File::Find;

use strict;
use warnings;

die "Must have '/path/to/modules' and '/path/to/modules.load'"
  unless $ARGV[0] && $ARGV[1];

find(
  {
    wanted => sub {
      return 1 if $File::Find::name !~ /\.so$/;
      my $modfile = $_;
      $modfile =~ /(lib|mod_)(.+)\.so$/;
      my $modname  = $2;
      my $filename = "$ARGV[1]/$modname.load";
      unless ( -f $filename ) {
        open( FILE, ">", $filename ) or die "Cannot open $filename";
        print FILE "LoadModule " . $modname . "_module $File::Find::name\n";
        close(FILE);
      }
    },
    follow => 1,
  },
  $ARGV[0]
);

exit 0;