[Jifty-commit] r393 - jifty/trunk/lib/Jifty
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Mon Dec 26 02:15:54 EST 2005
Author: jesse
Date: Mon Dec 26 02:15:54 2005
New Revision: 393
Modified:
/ (props changed)
jifty/trunk/lib/Jifty/Config.pm
jifty/trunk/lib/Jifty/Script/App.pm
Log:
r21760 at truegrounds: jesse | 2005-12-26 02:14:34 -0500
* Refactored Jifty::Config to allow the application class to be specified when calling Config->guess
* Refactored Jifty::Script::App into bite-sized morsels
* Made Jifty::Script::App generate a config file
* Made Jifty::Script::App and Jifty::Config::Guess happy with multi-level package names
Modified: jifty/trunk/lib/Jifty/Config.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Config.pm (original)
+++ jifty/trunk/lib/Jifty/Config.pm Mon Dec 26 02:15:54 2005
@@ -180,29 +180,41 @@
my $self = shift;
# Walk around a potential loop by calling guess to get the app name
- my $name = ( $self->stash->{framework}->{ApplicationName}
- ? $self->stash->{framework}->{ApplicationName}
- : Jifty::Util->app_name );
+ my $app_name;
+ if (@_) {
+ $app_name = shift;
+ } elsif ($self->stash->{framework}->{ApplicationName}) {
+
+ $app_name = $self->stash->{framework}->{ApplicationName};
+ } else {
+ $app_name = Jifty::Util->app_name;
+ }
+
+ my $app_class = $app_name;
+ $app_class =~ s/-/::/g;
+ my $db_name = lc $app_name;
+ $db_name =~ s/-/_/g;
return {
framework => {
- AdminMode => 1,
- ActionBasePath => $name . "::Action",
- ApplicationClass => $name,
- CurrentUserClass => $name ."::CurrentUser",
- ApplicationName => $name,
+ AdminMode => 1,
+ ActionBasePath => $app_class . "::Action",
+ ApplicationClass => $app_class,
+ CurrentUserClass => $app_class . "::CurrentUser",
+ ApplicationName => $app_name,
Database => {
- Database => lc $name,
+ Database => $db_name,
Driver => "SQLite",
Host => "localhost",
Password => "",
User => "",
Version => "0.0.1",
},
- Mailer => 'Sendmail',
+ Mailer => 'Sendmail',
MailerArgs => [],
- Web => {
- DefaultStaticRoot => Jifty::Util->share_root .'/web/static',
- DefaultTemplateRoot => Jifty::Util->share_root . '/web/templates',
+ Web => {
+ DefaultStaticRoot => Jifty::Util->share_root . '/web/static',
+ DefaultTemplateRoot => Jifty::Util->share_root
+ . '/web/templates',
StaticRoot => "web/static",
TemplateRoot => "web/templates",
}
@@ -232,6 +244,7 @@
return $hashref;
}
+
# Does a DFS, turning all leaves that look like C<%paths%> into absolute paths.
sub _expand_relative_paths {
my $self = shift;
Modified: jifty/trunk/lib/Jifty/Script/App.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Script/App.pm (original)
+++ jifty/trunk/lib/Jifty/Script/App.pm Mon Dec 26 02:15:54 2005
@@ -2,11 +2,14 @@
use strict;
package Jifty::Script::App;
-use base 'App::CLI::Command';
+use base qw'App::CLI::Command Class::Accessor';
use YAML;
use File::Copy;
+__PACKAGE__->mk_accessors(qw/prefix dist_name mod_name/);
+
+
=head1 NAME
Jifty::Script::App - Create the skeleton of a Jifty application
@@ -41,40 +44,74 @@
sub run {
my $self = shift;
- my $prefix = $self->{name} ||'';
+ $self->prefix( $self->{name} ||'');
- unless ($prefix =~ /\w+/ ) { die "You need to give your new Jifty app a --name"."\n";}
+ unless ($self->prefix =~ /\w+/ ) { die "You need to give your new Jifty app a --name"."\n";}
- my $modname = $self->{modname} || ucfirst($prefix);
+ # Turn my-app-name into My::App::Name.
- print("Creating new application ".$self->{name}."\n");
- mkdir($prefix);
+ $self->mod_name (join ("::", map { ucfirst } split (/\-/, $self->prefix)));
+ my $dist = $self->mod_name;
+ $self->dist_name($self->prefix);
- foreach my $dir ($self->_directories) {
- $dir =~ s/__APP__/$modname/;
- print("Creating directory $dir\n");
- mkdir( "$prefix/$dir") or die "Can't create $prefix/$dir: $!";
+ print("Creating new application ".$self->mod_name."\n");
+ $self->_make_directories();
+ $self->_install_jifty_binary();
+ $self->_write_makefile();
+ $self->_write_config();
- }
+}
+
+sub _install_jifty_binary {
+ my $self = shift;
+ my $prefix = $self->prefix;
# Copy our running copy of 'jifty' to bin/jifty
copy($0, "$prefix/bin/jifty");
# Mark it executable
chmod(0555, "$prefix/bin/jifty");
+}
+
+
+sub _write_makefile {
+ my $self = shift;
+ my $mod_name = $self->mod_name;
+ my $prefix = $self->prefix;
# Write a makefile
open(MAKEFILE, ">$prefix/Makefile.PL") or die "Can't write Makefile.PL: $!";
print MAKEFILE <<"EOT";
use inc::Module::Install;
-name('$modname');
+name('$mod_name');
version('0.01');
-requires('Jifty');
+requires('Jifty' => '@{[$Jifty::VERSION]}');
WriteAll;
EOT
close MAKEFILE;
-}
+}
+
+sub _make_directories {
+ my $self = shift;
+
+ mkdir($self->prefix);
+ my @dirs = qw( lib/ );
+ my @dir_parts = split('::',$self->mod_name);
+ my $lib_dir = "";
+ foreach my $part (@dir_parts) {
+ $lib_dir .= $part ."/";
+ push @dirs, "lib/". $lib_dir;
+ }
+
+ @dirs = (@dirs, $self->_directories);
+ foreach my $dir (@dirs) {
+ $dir =~ s/__APP__/$lib_dir/;
+ print("Creating directory $dir\n");
+ mkdir( $self->prefix."/$dir") or die "Can't create ". $self->prefix."/$dir: $!";
+
+ }
+}
sub _directories {
return qw(
bin
@@ -84,8 +121,6 @@
web
web/templates
web/static
- lib
- lib/__APP__
lib/__APP__/Model
lib/__APP__/Action
t
@@ -93,5 +128,16 @@
}
+sub _write_config {
+ my $self = shift;
+ my $cfg = Jifty::Config->new();
+ my $default_config = $cfg->guess($self->dist_name);
+ my $file = join("/",$self->prefix, 'etc','config.yml');
+ print("Creating configuration file $file\n");
+ YAML::DumpFile($file => $default_config);
+
+}
+
+
1;
More information about the Jifty-commit
mailing list