593323dc1e03d74617eb5c9d4b8abd8a22533a7e
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Script / Create.pm
1 package Catalyst::Script::Create;
2 use Moose;
3 use namespace::autoclean;
4
5 with 'Catalyst::ScriptRole';
6
7 has force => (
8     traits        => [qw(Getopt)],
9     cmd_aliases   => 'nonew',
10     isa           => 'Bool',
11     is            => 'ro',
12     documentation => 'Force new scripts',
13 );
14
15 has debug => (
16     traits        => [qw(Getopt)],
17     cmd_aliases   => 'd',
18     isa           => 'Bool',
19     is            => 'ro',
20     documentation => 'Force debug mode',
21 );
22
23 has mechanize => (
24     traits        => [qw(Getopt)],
25     cmd_aliases   => 'mech',
26     isa           => 'Bool',
27     is            => 'ro',
28     documentation => 'use WWW::Mechanize',
29 );
30
31 has helper_class => (
32     isa     => 'Str',
33     is      => 'ro',
34     builder => '_build_helper_class',
35 );
36
37 sub _build_helper_class { 'Catalyst::Helper' }
38
39 sub run {
40     my ($self) = @_;
41
42     $self->print_usage_text if !$self->ARGV->[0];
43
44     my $helper_class = $self->helper_class;
45     Class::MOP::load_class($helper_class);
46     my $helper = $helper_class->new( { '.newfiles' => !$self->force, mech => $self->mechanize } );
47
48     $self->print_usage_text unless $helper->mk_component( $self->application_name, @{$self->extra_argv} );
49
50 }
51
52 __PACKAGE__->meta->make_immutable;
53 1;
54
55 =head1 NAME
56
57 Catalyst::Script::Create - Create a new Catalyst Component
58
59 =head1 SYNOPSIS
60
61  myapp_create.pl [options] model|view|controller name [helper] [options]
62
63  Options:
64    --force        don't create a .new file where a file to be created exists
65    --mechanize    use Test::WWW::Mechanize::Catalyst for tests if available
66    --help         display this help and exits
67
68  Examples:
69    myapp_create.pl controller My::Controller
70    myapp_create.pl controller My::Controller BindLex
71    myapp_create.pl --mechanize controller My::Controller
72    myapp_create.pl view My::View
73    myapp_create.pl view MyView TT
74    myapp_create.pl view TT TT
75    myapp_create.pl model My::Model
76    myapp_create.pl model SomeDB DBIC::Schema MyApp::Schema create=dynamic\
77    dbi:SQLite:/tmp/my.db
78    myapp_create.pl model AnotherDB DBIC::Schema MyApp::Schema create=static\
79    dbi:Pg:dbname=foo root 4321
80
81  See also:
82    perldoc Catalyst::Manual
83    perldoc Catalyst::Manual::Intro
84
85 =head1 DESCRIPTION
86
87 Create a new Catalyst Component.
88
89 Existing component files are not overwritten.  If any of the component files
90 to be created already exist the file will be written with a '.new' suffix.
91 This behavior can be suppressed with the C<--force> option.
92
93 =head1 SEE ALSO
94
95 L<Catalyst::ScriptRunner>
96
97 =head1 AUTHORS
98
99 Catalyst Contributors, see Catalyst.pm
100
101 =head1 COPYRIGHT
102
103 This library is free software, you can redistribute it and/or modify
104 it under the same terms as Perl itself.
105
106 =cut
107