ca0807279d0cc0fa01d06c7dab12bf03e3b58817
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Script / Deploy.pm
1 package Catalyst::Script::Deploy;
2
3 use Moose;
4 use namespace::autoclean;
5
6 with 'MooseX::Getopt';
7 use MooseX::Types::Moose qw/Str/;
8 use Config::General;
9 use FindBin;
10 use lib "$FindBin::Bin/../lib";
11
12 has _app => (
13     reader   => 'app',
14     init_arg => 'app',
15     traits => [qw(NoGetopt)],
16     isa => 'Str',
17     is => 'ro',
18 );
19
20 has conf => ( 
21     is  => 'ro', 
22     isa => 'Str',
23     traits => [qw(Getopt)],
24     cmd_alias => 'c',
25     documentation => qq{ specify a configuration file to read from }
26 );
27
28
29
30
31
32 sub usage {
33
34    print "usage: perl script/myapp_deploy_schema.pl myapp.conf\n";
35    exit;
36
37 }
38
39 sub run {
40     my ($self) = shift;
41
42     $self->usage if $self->help;
43
44     my $app = $self->app;
45     Class::MOP::load_class($app);
46     Class::MOP::load_class("$app::Schema");
47     
48     my %hash = $conf->getall;
49
50     my $schema = $app::Schema->connect(
51         $hash{"Model::$schema_name"}{connect_info}[0], 
52         $hash{"Model::$schema_name"}{connect_info}[1], 
53         $hash{"Model::$schema_name"}{connect_info}[2]
54     );
55     $schema->deploy( { add_drop_tables => 1 } );
56
57
58 }
59
60 no Moose;
61 __PACKAGE__->meta->make_immutable;
62
63 1;
64