# 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->setup_config($caller->arguments);
$caller->setup_home;
}
@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} );
=cut
sub setup_config {
- my $class = shift;
+ my ($class, $flags) = @_;
my %args = %{ $class->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' );
=cut
sub setup_home {
- my ( $class, $home_flag ) = @_;
+ my ( $class ) = @_;
my $home = $class->container->resolve(
service => 'home',
- parameters => {
- home_flag => $home_flag
- },
);
if ($home) {
extends 'Bread::Board::Container';
+has flags => (
+ is => 'ro',
+ isa => 'ArrayRef',
+ default => sub { [] },
+);
+
has config_local_suffix => (
is => 'ro',
isa => 'Str',
config_local_suffix
config_path
locate_components
+ flags
home
root_dir
/;
);
}
+sub build_flags_service {
+ my $self = shift;
+
+ return Bread::Board::Literal->new(
+ lifecycle => 'Singleton',
+ name => 'flags',
+ value => $self->get_flags,
+ );
+}
+
+sub get_flags {
+ my $self = shift;
+ my $flags = {};
+
+ foreach (@{ $self->flags }) {
+ if (/^-Debug$/) {
+ $flags->{log} =
+ ( $flags->{log} ) ? 'debug,' . $flags->{log} : 'debug';
+ }
+ elsif (/^-(\w+)=?(.*)$/) {
+ $flags->{ lc $1 } = $2;
+ }
+ else {
+ push @{ $flags->{plugins} }, $_;
+ }
+ }
+
+ return $flags;
+}
+
sub build_home_service {
my $self = shift;
return $env;
}
- if ( my $home = $self->param('home_flag') ) {
+ if ( my $home = $self->param('flags')->{home} ) {
return $home;
}
return Catalyst::Utils::home($class);
},
- parameters => {
- home_flag => { is => 'ro', isa => 'Str|Undef', required => 0 }
- },
- dependencies => [ depends_on('catalyst_application') ],
+ dependencies => [ depends_on('flags'), depends_on('catalyst_application') ],
);
}