 e88919bfe2
			
		
	
	e88919bfe2
	
	
	
		
			
			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;
 |