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