1 package MooseX::Runnable::Invocation::Plugin::PAR;
4 use Module::ScanDeps ();
5 use App::Packer::PAR ();
6 use MooseX::Runnable::Run;
8 use Data::Dump::Streamer;
10 use File::Temp qw(tempfile);
12 my $mk_scanner = sub {
13 my $class = Moose::Meta::Class->create_anon_class( superclasses => ['Moose::Object'] );
15 for my $m (qw/set_file set_options calculate_info
16 go scan_deps add_deps _find_in_inc/){
17 $class->add_method( $m => sub { warn "$m @_" } );
19 $class->add_method( get_files => sub { warn 'get_files'; [ keys %INC ] } );
20 my $name = $class->name;
22 $INC{ "$name.pm" } = 1;
27 my ($next, $self, @args) = @_;
28 print "Creating a PAR instead of runing the app.\n";
30 { # pre-load as much as possible
31 my $class = $self->load_class;
32 $self->apply_scheme($class);
34 # this is probably not possible, but we might as well try
35 $self->validate_class($class);
40 map { "require '$_';\n" }
42 my %plugins = %{ $self->plugins };
44 my $plugins = Dump(\%plugins)->Out;
46 my $app = $self->class;
48 use MooseX::Runnable::Run;
49 use MooseX::Runnable::Invocation;
50 require Params::Validate; # XXX!
53 exit MooseX::Runnable::Invocation->new(
59 print "script: \n$script";
64 my $opt = { e => $script, o => $app, vvv => 1 };
66 App::Packer::PAR->new(
67 frontend => 'Module::ScanDeps',
68 backend => 'PAR::Packer',