updated the test
[catagits/Catalyst-Runtime.git] / lib / Catalyst.pm
index 042e786..4d3add3 100644 (file)
@@ -131,6 +131,13 @@ sub import {
     }
 
     $caller->arguments( [@arguments] );
+
+    # FIXME
+    # what is this for?
+    # we call setup_home on import AND on ->setup
+    # is there a reason for it?
+    # anyway there is no point for setup_home without setup_config() so...
+    $caller->setup_config($caller->arguments);
     $caller->setup_home;
 }
 
@@ -912,25 +919,9 @@ sub setup {
         @arguments = ( @arguments, @{ $class->arguments } );
     }
 
-    # Process options
-    my $flags = {};
-
-    foreach (@arguments) {
-
-        if (/^-Debug$/) {
-            $flags->{log} =
-              ( $flags->{log} ) ? 'debug,' . $flags->{log} : 'debug';
-        }
-        elsif (/^-(\w+)=?(.*)$/) {
-            $flags->{ lc $1 } = $2;
-        }
-        else {
-            push @{ $flags->{plugins} }, $_;
-        }
-    }
-
-    $class->setup_config();
-    $class->setup_home( delete $flags->{home} );
+    $class->setup_config(\@arguments);
+    my $flags = $class->container->resolve(service => 'flags');
+    $class->setup_home();
 
     $class->setup_log( delete $flags->{log} );
     $class->setup_plugins( delete $flags->{plugins} );
@@ -2325,7 +2316,7 @@ sub setup_actions { my $c = shift; $c->dispatcher->setup_actions( $c, @_ ) }
 =cut
 
 sub setup_config {
-    my $class = shift;
+    my ($class, $flags) = @_;
 
     my %args = %{ $class->config || {} };
 
@@ -2339,7 +2330,7 @@ sub setup_config {
         $container_class = Class::MOP::load_first_existing_class("${class}::Container", 'Catalyst::IOC::Container');
     }
 
-    my $container = $container_class->new( %args, name => $class );
+    my $container = $container_class->new( %args, name => $class, flags => $flags );
     $class->container($container);
 
     my $config = $container->resolve( service => 'config' );
@@ -2599,18 +2590,16 @@ Sets up the home directory.
 =cut
 
 sub setup_home {
-    my ( $class, $home ) = @_;
+    my ( $class ) = @_;
 
-    if ( my $env = Catalyst::Utils::env_value( $class, 'HOME' ) ) {
-        $home = $env;
-    }
-
-    $home ||= Catalyst::Utils::home($class);
+    my $home = $class->container->resolve(
+        service    => 'home',
+    );
 
     if ($home) {
         #I remember recently being scolded for assigning config values like this
         $class->config->{home} ||= $home;
-        $class->config->{root} ||= Path::Class::Dir->new($home)->subdir('root');
+        $class->config->{root} ||= $class->container->resolve(service => 'root_dir');
     }
 }