8b98393b4003b93594db8752c2e47b2f2a26619e
[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 sub usage {
29
30    print "usage: perl script/myapp_deploy_schema.pl myapp.conf\n";
31    exit;
32
33 }
34
35 sub run {
36     my ($self) = shift;
37
38     $self->usage if $self->help;
39
40     my $app = $self->app;
41     Class::MOP::load_class($app);
42     Class::MOP::load_class("$app::Schema");
43     
44     my %hash = $conf->getall;
45
46     my $schema = $app::Schema->connect(
47         $hash{"Model::$schema_name"}{connect_info}[0], 
48         $hash{"Model::$schema_name"}{connect_info}[1], 
49         $hash{"Model::$schema_name"}{connect_info}[2]
50     );
51     $schema->deploy( { add_drop_tables => 1 } );
52
53
54 }
55
56 __PACKAGE__->meta->make_immutable;
57
58 1;
59