Docs
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Script / Create.pm
CommitLineData
0ba6e8aa 1package Catalyst::Script::Create;
a24a5860 2use Moose;
ad8b4c91 3use MooseX::Types::Moose qw/Bool Str/;
f4a497bb 4use namespace::autoclean;
4ebd5ecf 5
d3082fac 6with 'Catalyst::ScriptRole';
73e4f0f1 7
8has force => (
ad8b4c91 9 traits => [qw(Getopt)],
10 cmd_aliases => 'nonew',
11 isa => Bool,
12 is => 'ro',
d3082fac 13 documentation => 'Force new scripts',
73e4f0f1 14);
15
16has debug => (
ad8b4c91 17 traits => [qw(Getopt)],
18 cmd_aliases => 'd',
19 isa => Bool,
20 is => 'ro',
d3082fac 21 documentation => 'Force debug mode',
73e4f0f1 22);
23
24has mechanize => (
ad8b4c91 25 traits => [qw(Getopt)],
26 cmd_aliases => 'mech',
27 isa => Bool,
28 is => 'ro',
d3082fac 29 documentation => 'use WWW::Mechanize',
73e4f0f1 30);
2824ec8d 31
ad8b4c91 32has helper_class => (
33 isa => Str,
34 is => 'ro',
35 builder => '_build_helper_class',
36);
37
38sub _build_helper_class { 'Catalyst::Helper' }
0a33c6d3 39
2824ec8d 40sub run {
f4a497bb 41 my ($self) = @_;
4ebd5ecf 42
754e86c6 43 $self->_getopt_full_usage if !$self->ARGV->[0];
4ebd5ecf 44
0a33c6d3 45 my $helper_class = $self->helper_class;
46 Class::MOP::load_class($helper_class);
47 my $helper = $helper_class->new( { '.newfiles' => !$self->force, mech => $self->mechanize } );
4ebd5ecf 48
f5325631 49 $self->_getopt_full_usage unless $helper->mk_component( $self->application_name, @{$self->extra_argv} );
2824ec8d 50
51}
4ebd5ecf 52
d6e8e664 53__PACKAGE__->meta->make_immutable;
4ebd5ecf 54
55=head1 NAME
56
d3082fac 57Catalyst::Script::Create - Create a new Catalyst Component
4ebd5ecf 58
59=head1 SYNOPSIS
60
cbaaecc0 61 myapp_create.pl [options] model|view|controller name [helper] [options]
4ebd5ecf 62
63 Options:
ad8b4c91 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
4ebd5ecf 67
68 Examples:
d3082fac 69 myapp_create.pl controller My::Controller
70 myapp_create.pl controller My::Controller BindLex
f5325631 71 myapp_create.pl --mechanize controller My::Controller
d3082fac 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\
4ebd5ecf 77 dbi:SQLite:/tmp/my.db
d3082fac 78 myapp_create.pl model AnotherDB DBIC::Schema MyApp::Schema create=static\
4ebd5ecf 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
87Create a new Catalyst Component.
88
89Existing component files are not overwritten. If any of the component files
90to be created already exist the file will be written with a '.new' suffix.
ad8b4c91 91This behavior can be suppressed with the C<--force> option.
4ebd5ecf 92
383c5be6 93=head1 SEE ALSO
94
95L<Catalyst::ScriptRunner>
96
4ebd5ecf 97=head1 AUTHORS
98
99Catalyst Contributors, see Catalyst.pm
100
101=head1 COPYRIGHT
102
103This library is free software, you can redistribute it and/or modify
104it under the same terms as Perl itself.
105
106=cut
4f0612fd 107