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