Move setup to C::Setup
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Setup.pm
index e7bc54b..fe8036c 100644 (file)
@@ -1,12 +1,15 @@
 package Catalyst::Setup;
 
 use strict;
+use base qw/Class::Data::Inheritable/;
 use Catalyst::Exception;
 use Catalyst::Log;
 use Catalyst::Utils;
 use Path::Class;
 use Text::ASCIITable;
 
+__PACKAGE__->mk_classdata($_) for qw/arguments dispatcher engine log/;
+
 =head1 NAME
 
 Catalyst::Setup - The Catalyst Setup class
@@ -21,6 +24,47 @@ See L<Catalyst>.
 
 =over 4
 
+=item $c->setup
+
+Setup.
+
+    $c->setup;
+
+=cut
+
+sub setup {
+    my $class = shift;
+
+    # Call plugins setup
+    $class->NEXT::setup;
+
+    # Initialize our data structure
+    $class->components( {} );
+
+    $class->setup_components;
+
+    if ( $class->debug ) {
+        my $t = Text::ASCIITable->new;
+        $t->setOptions( 'hide_HeadRow',  1 );
+        $t->setOptions( 'hide_HeadLine', 1 );
+        $t->setCols('Class');
+        $t->setColWidth( 'Class', 75, 1 );
+        $t->addRow($_) for sort keys %{ $class->components };
+        $class->log->debug( "Loaded components:\n" . $t->draw )
+          if ( @{ $t->{tbl_rows} } );
+    }
+
+    # Add our self to components, since we are also a component
+    $class->components->{$class} = $class;
+
+    $class->setup_actions;
+
+    if ( $class->debug ) {
+        my $name = $class->config->{name} || 'Application';
+        $class->log->info("$name powered by Catalyst $Catalyst::VERSION");
+    }
+}
+
 =item $c->setup_components
 
 Setup components.