Reformatted documentation
[catagits/Catalyst-Runtime.git] / lib / Catalyst / PAR.pm
index 0f64b85..6d7164b 100644 (file)
@@ -22,16 +22,14 @@ Package Catalyst Applications.
 
 =head1 METHODS
 
-=over 4
-
-=item $self->package( $par, $engine )
+=head2 $self->package(\%options)
 
 =cut
 
 sub package {
     my ( $self, $options ) = @_;
 
-    my $par    = $options->{par}    || 'application.par';
+    my $par    = $options->{output} || 'application.par';
     my $engine = $options->{engine} || 'CGI';
 
     # Check for PAR
@@ -52,9 +50,10 @@ sub package {
         sub {
             my $name = $File::Find::name;
             return if $name =~ /^\W*lib/;
+            return if $name =~ /^\W*blib/;
+            return if $name =~ /^\W*_build/;
             return if $name =~ /\.par$/;
             return if $name !~ /\w+/;
-            warn "$name\n";
             push @files, $name;
         },
         '.'
@@ -63,18 +62,36 @@ sub package {
     my $par_test = File::Spec->catfile( $FindBin::Bin, '..', 'par_test.pl' );
     unlink $par_test;
 
+    my $classes = '';
+    for my $req ( split ',', $options->{classes} ) {
+        $classes .= "require $req;\n";
+    }
+    my $version  = $Catalyst::VERSION;
     my $class    = $options->{class};
     my $tmp_file = IO::File->new("> $par_test");
     print $tmp_file <<"EOF";
+die "$class on Catalyst $version\n" if \$0 !~ /par_test.pl\.\\w+\$/;
 BEGIN { \$ENV{CATALYST_ENGINE} = '$engine' };
-use FindBin;
 use lib 'lib';
-use $class;
+require $class;
+import $class;
+$classes
 EOF
     $tmp_file->close;
 
     # Create package
-    my %opt = ( 'x' => 1, 'n' => 0, 'o' => $par, 'a' => [@files] );
+    local $SIG{__WARN__} = sub { };
+    open my $olderr, '>&STDERR';
+    open STDERR, '>', File::Spec->devnull;
+    my %opt = (
+        'x' => 1,
+        'n' => 0,
+        'o' => $par,
+        'a' => [@files],
+        'p' => 1,
+        'B' => $options->{core},
+        'm' => $options->{multiarch}
+    );
     App::Packer::PAR->new(
         frontend  => 'Module::ScanDeps',
         backend   => 'PAR::Packer',
@@ -82,12 +99,11 @@ EOF
         backopts  => \%opt,
         args      => ['par_test.pl'],
     )->go;
+    open STDERR, '>&', $olderr;
 
     unlink $par_test;
 }
 
-=back
-
 =head1 AUTHOR
 
 Sebastian Riedel, C<sri@oook.de>