Added -scripts option to catalyst.pl for script updating
[catagits/Catalyst-Runtime.git] / script / catalyst.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4 use Getopt::Long;
5 use Pod::Usage;
6 use Catalyst::Helper;
7
8 my $help    = 0;
9 my $nonew   = 0;
10 my $scripts = 0;
11 my $short   = 0;
12
13 GetOptions(
14     'help|?'  => \$help,
15     'nonew'   => \$nonew,
16     'scripts' => \$scripts,
17     'short'   => \$short
18 );
19
20 pod2usage(1) if ( $help || !$ARGV[0] );
21
22 my $helper =
23   Catalyst::Helper->new(
24     { '.newfiles' => !$nonew, 'scripts' => $scripts, 'short' => $short } );
25 pod2usage(1) unless $helper->mk_app( $ARGV[0] );
26
27 1;
28 __END__
29
30 =head1 NAME
31
32 catalyst - Bootstrap a Catalyst application
33
34 =head1 SYNOPSIS
35
36 catalyst.pl [options] application-name
37
38  Options:
39    -help       display this help and exits
40    -nonew      don't create a .new file where a file to be created exists
41    -scripts    update helper scripts only
42    -short      use short types, like C instead of Controller...
43
44  application-name must be a valid Perl module name and can include "::"
45
46  Examples:
47     catalyst.pl My::App
48     catalyst.pl MyApp
49
50
51 =head1 DESCRIPTION
52
53 The C<catalyst.pl> script bootstraps a Catalyst application, creating a
54 directory structure populated with skeleton files.  
55
56 The application name must be a valid Perl module name.  The name of the
57 directory created is formed from the application name supplied, with double
58 colons replaced with hyphens (so, for example, the directory for C<My::App> is
59 C<My-App>).
60
61 Using the example application name C<My::App>, the application directory will
62 contain the following items:
63
64 =over 4
65
66 =item README
67
68 a skeleton README file, which you are encouraged to expand on
69
70 =item Build.PL
71
72 a C<Module::Build> build script
73
74 =item Changes
75
76 a changes file with an initial entry for the creation of the application
77
78 =item Makefile.PL
79
80 an old-style MakeMaker script.  Catalyst uses the C<Module::Build> system so
81 this script actually generates a Makeifle that invokes the Build script.
82
83 =item lib
84
85 contains the application module (C<My/App.pm>) and
86 subdirectories for model, view, and controller components (C<My/App/M>,
87 C<My/App/V>, and C<My/App/C>).  
88
89 =item root
90
91 root directory for your web document content.  This is left empty.
92
93 =item script
94
95 a directory containing helper scripts:
96
97 =over 4
98
99 =item C<my_app_create.pl>
100
101 helper script to generate new component modules
102
103 =item C<my_app_server.pl>
104
105 runs the generated application within a Catalyst test server, which can be
106 used for testing without resorting to a full-blown web server configuration.
107
108 =item C<my_app_cgi.pl>
109
110 runs the generated application as a CGI script
111
112 =item C<my_app_fastcgi.pl>
113
114 runs the generated application as a FastCGI script
115
116
117 =item C<my_app_test.pl>
118
119 runs an action of the generated application from the comand line.
120
121 =back
122
123 =item t
124
125 test directory
126
127 =back
128
129
130 The application module generated by the C<catalyst.pl> script is functional,
131 although it reacts to all requests by outputting a friendly welcome screen.
132
133
134 =head1 NOTE
135
136 Neither C<catalyst.pl> nor the generated helper script will overwrite existing
137 files.  In fact the scripts will generate new versions of any existing files,
138 adding the extension C<.new> to the filename.  The C<.new> file is not created
139 if would be identical to the existing file.  
140
141 This means you can re-run the scripts for example to see if newer versions of
142 Catalyst or its plugins generate different code, or to see how you may have
143 changed the generated code (although you do of course have all your code in a
144 version control system anyway, don't you ...).
145
146
147
148 =head1 SEE ALSO
149
150 L<Catalyst::Manual>, L<Catalyst::Manual::Intro>
151
152 =head1 AUTHOR
153
154 Sebastian Riedel, C<sri@oook.de>,
155 Andrew Ford, C<A.Ford@ford-mason.co.uk>
156
157
158 =head1 COPYRIGHT
159
160 Copyright 2004-2005 Sebastian Riedel. All rights reserved.
161
162 This library is free software, you can redistribute it and/or modify it under
163 the same terms as Perl itself.
164
165 =cut