The Generators/ directory can contain spurious files such as editors' backup files. Even worse, there could be .swp files which are not even valid Perl scripts. Let's just ignore anything but .pm files in said directory. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			43 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;
 |