You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
43 lines
1.1 KiB
15 years ago
|
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 if ($gen =~ /^\.\.?$/);
|
||
|
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;
|