X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst.pm;h=4d3add37fa6b73f439273eab72d7d481569c7476;hb=gsoc_breadboard_flags;hp=042e786489c8da53694d6690ea016b9b4e6bfc2d;hpb=2b05119df5efd14aac1847ebf49a8a12e4f3a073;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 042e786..4d3add3 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -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'); } }