42 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
package Generators;
 | 
						|
require Exporter;
 | 
						|
 | 
						|
use strict;
 | 
						|
use File::Basename;
 | 
						|
no strict 'refs';
 | 
						|
use vars qw($VERSION @AVAILABLE);
 | 
						|
 | 
						|
our $VERSION = '1.00';
 | 
						|
our(@ISA, @EXPORT, @EXPORT_OK, @AVAILABLE);
 | 
						|
@ISA = qw(Exporter);
 | 
						|
 | 
						|
BEGIN {
 | 
						|
    local(*D);
 | 
						|
    my $me = $INC{"Generators.pm"};
 | 
						|
    die "Couldn't find myself in \@INC, which is required to load the generators!" if ("$me" eq "");
 | 
						|
    $me = dirname($me);
 | 
						|
    if (opendir(D,"$me/Generators")) {
 | 
						|
        foreach my $gen (readdir(D)) {
 | 
						|
            next unless ($gen  =~ /\.pm$/);
 | 
						|
            require "${me}/Generators/$gen";
 | 
						|
            $gen =~ s,\.pm,,;
 | 
						|
            push(@AVAILABLE, $gen);
 | 
						|
        }
 | 
						|
        closedir(D);
 | 
						|
        my $gens = join(', ', @AVAILABLE);
 | 
						|
    }
 | 
						|
 | 
						|
    push @EXPORT_OK, qw(available);
 | 
						|
}
 | 
						|
 | 
						|
sub available {
 | 
						|
    return @AVAILABLE;
 | 
						|
}
 | 
						|
 | 
						|
sub generate {
 | 
						|
    my ($gen, $git_dir, $out_dir, $rel_dir, %build_structure) = @_;
 | 
						|
    return eval("Generators::${gen}::generate(\$git_dir, \$out_dir, \$rel_dir, \%build_structure)") if grep(/^$gen$/, @AVAILABLE);
 | 
						|
    die "Generator \"${gen}\" is not available!\nAvailable generators are: @AVAILABLE\n";
 | 
						|
}
 | 
						|
 | 
						|
1;
 |