use strict; use warnings;
package Module::Build::InlineModule;
our $VERSION = '0.04';
use base 'Module::Build';
__PACKAGE__->add_property('inline');
use Inline::Module();
sub ACTION_code {
my $self = shift;
$self->SUPER::ACTION_code(@_);
my $meta = $self->get_meta;
my @inc = @INC;
local @INC = (
(-e 'inc' ? ('inc') : ()),
'lib',
@inc,
);
for my $module (@{$meta->{module}}) {
eval "require $module; 1" or die $@;
}
Inline::Module->handle_fixblib;
}
sub ACTION_distdir {
my $self = shift;
$self->SUPER::ACTION_distdir(@_);
my $distdir = $self->dist_dir;
my $meta = $self->get_meta;
my $stub_modules = $meta->{stub};
my $included_modules = Inline::Module->included_modules($meta);
my $files_added = Inline::Module->add_to_distdir(
$distdir,
$stub_modules,
$included_modules,
);
# XXX ask leont:
# $self->_add_to_manifest($_)
# for @$files_added;
}
sub get_meta {
my $self = shift;
my $meta = $self->{properties}{inline}
or die "Missing Module::Build property: 'inline'";
$meta->{module} or die
"Module::Build::InlineModule property 'inline' missing key 'module'";
Inline::Module->default_meta($meta);
return $meta;
}
1;