use
vars
qw{$VERSION @ISA}
;
BEGIN {
$VERSION
=
'1.06'
;
@ISA
=
qw{Module::Install::Base}
;
}
sub
bundle {
my
$self
=
shift
;
my
$bundle_dir
=
$self
->_top->{bundle};
my
$cwd
= Cwd::getcwd();
my
$cp
= CPANPLUS::Internals->_retrieve_id( CPANPLUS::Internals->_last_id )
|| CPANPLUS::Backend->new;
my
$conf
=
$cp
->configure_object;
my
$modtree
=
$cp
->module_tree;
$conf
->set_conf(
verbose
=> 1 );
$conf
->set_conf(
signature
=> 0 );
$conf
->set_conf(
md5
=> 0 );
mkdir
(
$bundle_dir
, 0777 );
while
(
my
(
$name
,
$version
) =
splice
(
@_
, 0, 2 ) ) {
my
$mod
=
$cp
->module_tree(
$name
);
if
(not
$mod
) {
warn
"Warning: Could not find distribution for module $name on CPAN. Bundle it manually.\n"
;
next
;
}
if
(
$mod
->package_is_perl_core or
$self
->{already_bundled}{
$mod
->
package
} ) {
next
;
}
my
$where
=
$mod
->fetch(
fetchdir
=>
$bundle_dir
, );
unless
(
$where
) {
warn
"Warning: Could not download distribution $bundle_dir. Download it manually.\n"
;
next
;
}
my
$file
= Cwd::abs_path(
$where
);
my
$extract_result
=
$mod
->extract(
files
=> [
$file
],
extractdir
=>
$bundle_dir
,
);
unlink
$file
;
unless
(
$extract_result
) {
warn
"Warning: Could not extract distribution $bundle_dir. Extract it manually.\n"
;
next
;
}
$self
->{already_bundled}{
$mod
->
package
}++;
}
chdir
$cwd
;
}
1;