[Jifty-commit] r3441 - in jifty/trunk: . examples/Example-Todo
examples/Yada examples/Yada/etc examples/Yada/inc/Module
examples/Yada/inc/Module/Install examples/Yada/lib/Yada
examples/Yada/lib/Yada/Action examples/Yada/lib/Yada/Model
examples/Yada/lib/Yada/View examples/Yada/t
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Mon Jun 11 05:05:44 EDT 2007
Author: clkao
Date: Mon Jun 11 05:05:43 2007
New Revision: 3441
Added:
jifty/trunk/examples/Yada/
- copied from r3323, /jifty/trunk/examples/Example-Todo/
jifty/trunk/examples/Yada/inc/Module/Install/Can.pm
jifty/trunk/examples/Yada/inc/Module/Install/Fetch.pm
jifty/trunk/examples/Yada/inc/Module/Install/Makefile.pm
jifty/trunk/examples/Yada/inc/Module/Install/Win32.pm
jifty/trunk/examples/Yada/lib/Yada/
jifty/trunk/examples/Yada/lib/Yada/Action/
jifty/trunk/examples/Yada/lib/Yada/Model/
jifty/trunk/examples/Yada/lib/Yada/Model/Todo.pm
jifty/trunk/examples/Yada/lib/Yada/Model/User.pm
jifty/trunk/examples/Yada/lib/Yada/View/
jifty/trunk/examples/Yada/lib/Yada/View.pm
jifty/trunk/examples/Yada/lib/Yada/View/Todo.pm
Removed:
jifty/trunk/examples/Example-Todo/
jifty/trunk/examples/Yada/lib/Example/
Modified:
jifty/trunk/ (props changed)
jifty/trunk/examples/Yada/META.yml
jifty/trunk/examples/Yada/Makefile.PL
jifty/trunk/examples/Yada/etc/config.yml
jifty/trunk/examples/Yada/inc/Module/Install.pm
jifty/trunk/examples/Yada/inc/Module/Install/Base.pm
jifty/trunk/examples/Yada/inc/Module/Install/Metadata.pm
jifty/trunk/examples/Yada/inc/Module/Install/WriteAll.pm
jifty/trunk/examples/Yada/t/00-model-Todo.t
Log:
Example::Todo is too hard to type. Yada!
r18180 at ubuntu: clkao | 2007-06-11 04:42:19 -0400
yada!
r18181 at ubuntu: clkao | 2007-06-11 04:44:38 -0400
yada!
r18182 at ubuntu: clkao | 2007-06-11 04:46:17 -0400
yada!
r18183 at ubuntu: clkao | 2007-06-11 05:03:12 -0400
yada!
Modified: jifty/trunk/examples/Yada/META.yml
==============================================================================
--- /jifty/trunk/examples/Example-Todo/META.yml (original)
+++ jifty/trunk/examples/Yada/META.yml Mon Jun 11 05:05:43 2007
@@ -0,0 +1,15 @@
+---
+distribution_type: module
+generated_by: Module::Install version 0.67
+license: unknown
+meta-spec:
+ url: http://module-build.sourceforge.net/META-spec-v1.3.html
+ version: 1.3
+name: Yada
+no_index:
+ directory:
+ - inc
+ - t
+requires:
+ Jifty: 0.70117
+version: 0.01
Modified: jifty/trunk/examples/Yada/Makefile.PL
==============================================================================
--- /jifty/trunk/examples/Example-Todo/Makefile.PL (original)
+++ jifty/trunk/examples/Yada/Makefile.PL Mon Jun 11 05:05:43 2007
@@ -1,6 +1,6 @@
use inc::Module::Install;
-name 'Example::Todo';
+name 'Yada';
version '0.01';
requires 'Jifty' => '0.70117';
Modified: jifty/trunk/examples/Yada/etc/config.yml
==============================================================================
--- /jifty/trunk/examples/Example-Todo/etc/config.yml (original)
+++ jifty/trunk/examples/Yada/etc/config.yml Mon Jun 11 05:05:43 2007
@@ -4,7 +4,7 @@
framework:
AdminMode: 1
SkipAccessControl: 1
- ApplicationClass: Example::Todo
+ ApplicationClass: Yada
ApplicationName: Example-Todo
ApplicationUUID: 80DF397A-D999-11DB-B80A-9318EBB6763A
Database:
@@ -38,7 +38,7 @@
PubSub:
Backend: Memcached
Enable: ~
- TemplateClass: Example::Todo::View
+ TemplateClass: Yada::View
Web:
BaseURL: http://localhost
DataDir: var/mason
Modified: jifty/trunk/examples/Yada/inc/Module/Install.pm
==============================================================================
--- /jifty/trunk/examples/Example-Todo/inc/Module/Install.pm (original)
+++ jifty/trunk/examples/Yada/inc/Module/Install.pm Mon Jun 11 05:05:43 2007
@@ -28,7 +28,7 @@
# This is not enforced yet, but will be some time in the next few
# releases once we can make sure it won't clash with custom
# Module::Install extensions.
- $VERSION = '0.64';
+ $VERSION = '0.67';
}
# Whether or not inc::Module::Install is actually loaded, the
@@ -86,7 +86,7 @@
# delegate back to parent dirs
goto &$code unless $cwd eq $pwd;
}
- $$sym =~ /([^:]+)$/ or die "Cannot autoload $who - $sym";
+ $$sym =~ /([^:]+)$/ or Carp::confess "Cannot autoload $who - $sym";
unshift @_, ($self, $1);
goto &{$self->can('call')} unless uc($1) eq $1;
};
Modified: jifty/trunk/examples/Yada/inc/Module/Install/Base.pm
==============================================================================
--- /jifty/trunk/examples/Example-Todo/inc/Module/Install/Base.pm (original)
+++ jifty/trunk/examples/Yada/inc/Module/Install/Base.pm Mon Jun 11 05:05:43 2007
@@ -1,7 +1,7 @@
#line 1
package Module::Install::Base;
-$VERSION = '0.64';
+$VERSION = '0.67';
# Suspend handler for "redefined" warnings
BEGIN {
Added: jifty/trunk/examples/Yada/inc/Module/Install/Can.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/examples/Yada/inc/Module/Install/Can.pm Mon Jun 11 05:05:43 2007
@@ -0,0 +1,82 @@
+#line 1
+package Module::Install::Can;
+
+use strict;
+use Module::Install::Base;
+use Config ();
+### This adds a 5.005 Perl version dependency.
+### This is a bug and will be fixed.
+use File::Spec ();
+use ExtUtils::MakeMaker ();
+
+use vars qw{$VERSION $ISCORE @ISA};
+BEGIN {
+ $VERSION = '0.67';
+ $ISCORE = 1;
+ @ISA = qw{Module::Install::Base};
+}
+
+# check if we can load some module
+### Upgrade this to not have to load the module if possible
+sub can_use {
+ my ($self, $mod, $ver) = @_;
+ $mod =~ s{::|\\}{/}g;
+ $mod .= '.pm' unless $mod =~ /\.pm$/i;
+
+ my $pkg = $mod;
+ $pkg =~ s{/}{::}g;
+ $pkg =~ s{\.pm$}{}i;
+
+ local $@;
+ eval { require $mod; $pkg->VERSION($ver || 0); 1 };
+}
+
+# check if we can run some command
+sub can_run {
+ my ($self, $cmd) = @_;
+
+ my $_cmd = $cmd;
+ return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
+
+ for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
+ my $abs = File::Spec->catfile($dir, $_[1]);
+ return $abs if (-x $abs or $abs = MM->maybe_command($abs));
+ }
+
+ return;
+}
+
+# can we locate a (the) C compiler
+sub can_cc {
+ my $self = shift;
+ my @chunks = split(/ /, $Config::Config{cc}) or return;
+
+ # $Config{cc} may contain args; try to find out the program part
+ while (@chunks) {
+ return $self->can_run("@chunks") || (pop(@chunks), next);
+ }
+
+ return;
+}
+
+# Fix Cygwin bug on maybe_command();
+if ( $^O eq 'cygwin' ) {
+ require ExtUtils::MM_Cygwin;
+ require ExtUtils::MM_Win32;
+ if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) {
+ *ExtUtils::MM_Cygwin::maybe_command = sub {
+ my ($self, $file) = @_;
+ if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) {
+ ExtUtils::MM_Win32->maybe_command($file);
+ } else {
+ ExtUtils::MM_Unix->maybe_command($file);
+ }
+ }
+ }
+}
+
+1;
+
+__END__
+
+#line 157
Added: jifty/trunk/examples/Yada/inc/Module/Install/Fetch.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/examples/Yada/inc/Module/Install/Fetch.pm Mon Jun 11 05:05:43 2007
@@ -0,0 +1,93 @@
+#line 1
+package Module::Install::Fetch;
+
+use strict;
+use Module::Install::Base;
+
+use vars qw{$VERSION $ISCORE @ISA};
+BEGIN {
+ $VERSION = '0.67';
+ $ISCORE = 1;
+ @ISA = qw{Module::Install::Base};
+}
+
+sub get_file {
+ my ($self, %args) = @_;
+ my ($scheme, $host, $path, $file) =
+ $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
+
+ if ( $scheme eq 'http' and ! eval { require LWP::Simple; 1 } ) {
+ $args{url} = $args{ftp_url}
+ or (warn("LWP support unavailable!\n"), return);
+ ($scheme, $host, $path, $file) =
+ $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
+ }
+
+ $|++;
+ print "Fetching '$file' from $host... ";
+
+ unless (eval { require Socket; Socket::inet_aton($host) }) {
+ warn "'$host' resolve failed!\n";
+ return;
+ }
+
+ return unless $scheme eq 'ftp' or $scheme eq 'http';
+
+ require Cwd;
+ my $dir = Cwd::getcwd();
+ chdir $args{local_dir} or return if exists $args{local_dir};
+
+ if (eval { require LWP::Simple; 1 }) {
+ LWP::Simple::mirror($args{url}, $file);
+ }
+ elsif (eval { require Net::FTP; 1 }) { eval {
+ # use Net::FTP to get past firewall
+ my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
+ $ftp->login("anonymous", 'anonymous at example.com');
+ $ftp->cwd($path);
+ $ftp->binary;
+ $ftp->get($file) or (warn("$!\n"), return);
+ $ftp->quit;
+ } }
+ elsif (my $ftp = $self->can_run('ftp')) { eval {
+ # no Net::FTP, fallback to ftp.exe
+ require FileHandle;
+ my $fh = FileHandle->new;
+
+ local $SIG{CHLD} = 'IGNORE';
+ unless ($fh->open("|$ftp -n")) {
+ warn "Couldn't open ftp: $!\n";
+ chdir $dir; return;
+ }
+
+ my @dialog = split(/\n/, <<"END_FTP");
+open $host
+user anonymous anonymous\@example.com
+cd $path
+binary
+get $file $file
+quit
+END_FTP
+ foreach (@dialog) { $fh->print("$_\n") }
+ $fh->close;
+ } }
+ else {
+ warn "No working 'ftp' program available!\n";
+ chdir $dir; return;
+ }
+
+ unless (-f $file) {
+ warn "Fetching failed: $@\n";
+ chdir $dir; return;
+ }
+
+ return if exists $args{size} and -s $file != $args{size};
+ system($args{run}) if exists $args{run};
+ unlink($file) if $args{remove};
+
+ print(((!exists $args{check_for} or -e $args{check_for})
+ ? "done!" : "failed! ($!)"), "\n");
+ chdir $dir; return !$?;
+}
+
+1;
Added: jifty/trunk/examples/Yada/inc/Module/Install/Makefile.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/examples/Yada/inc/Module/Install/Makefile.pm Mon Jun 11 05:05:43 2007
@@ -0,0 +1,237 @@
+#line 1
+package Module::Install::Makefile;
+
+use strict 'vars';
+use Module::Install::Base;
+use ExtUtils::MakeMaker ();
+
+use vars qw{$VERSION $ISCORE @ISA};
+BEGIN {
+ $VERSION = '0.67';
+ $ISCORE = 1;
+ @ISA = qw{Module::Install::Base};
+}
+
+sub Makefile { $_[0] }
+
+my %seen = ();
+
+sub prompt {
+ shift;
+
+ # Infinite loop protection
+ my @c = caller();
+ if ( ++$seen{"$c[1]|$c[2]|$_[0]"} > 3 ) {
+ die "Caught an potential prompt infinite loop ($c[1]|$c[2]|$_[0])";
+ }
+
+ # In automated testing, always use defaults
+ if ( $ENV{AUTOMATED_TESTING} and ! $ENV{PERL_MM_USE_DEFAULT} ) {
+ local $ENV{PERL_MM_USE_DEFAULT} = 1;
+ goto &ExtUtils::MakeMaker::prompt;
+ } else {
+ goto &ExtUtils::MakeMaker::prompt;
+ }
+}
+
+sub makemaker_args {
+ my $self = shift;
+ my $args = ($self->{makemaker_args} ||= {});
+ %$args = ( %$args, @_ ) if @_;
+ $args;
+}
+
+# For mm args that take multiple space-seperated args,
+# append an argument to the current list.
+sub makemaker_append {
+ my $self = sShift;
+ my $name = shift;
+ my $args = $self->makemaker_args;
+ $args->{name} = defined $args->{$name}
+ ? join( ' ', $args->{name}, @_ )
+ : join( ' ', @_ );
+}
+
+sub build_subdirs {
+ my $self = shift;
+ my $subdirs = $self->makemaker_args->{DIR} ||= [];
+ for my $subdir (@_) {
+ push @$subdirs, $subdir;
+ }
+}
+
+sub clean_files {
+ my $self = shift;
+ my $clean = $self->makemaker_args->{clean} ||= {};
+ %$clean = (
+ %$clean,
+ FILES => join(' ', grep length, $clean->{FILES}, @_),
+ );
+}
+
+sub realclean_files {
+ my $self = shift;
+ my $realclean = $self->makemaker_args->{realclean} ||= {};
+ %$realclean = (
+ %$realclean,
+ FILES => join(' ', grep length, $realclean->{FILES}, @_),
+ );
+}
+
+sub libs {
+ my $self = shift;
+ my $libs = ref $_[0] ? shift : [ shift ];
+ $self->makemaker_args( LIBS => $libs );
+}
+
+sub inc {
+ my $self = shift;
+ $self->makemaker_args( INC => shift );
+}
+
+my %test_dir = ();
+
+sub _wanted_t {
+ /\.t$/ and -f $_ and $test_dir{$File::Find::dir} = 1;
+}
+
+sub tests_recursive {
+ my $self = shift;
+ if ( $self->tests ) {
+ die "tests_recursive will not work if tests are already defined";
+ }
+ my $dir = shift || 't';
+ unless ( -d $dir ) {
+ die "tests_recursive dir '$dir' does not exist";
+ }
+ require File::Find;
+ %test_dir = ();
+ File::Find::find( \&_wanted_t, $dir );
+ $self->tests( join ' ', map { "$_/*.t" } sort keys %test_dir );
+}
+
+sub write {
+ my $self = shift;
+ die "&Makefile->write() takes no arguments\n" if @_;
+
+ my $args = $self->makemaker_args;
+ $args->{DISTNAME} = $self->name;
+ $args->{NAME} = $self->module_name || $self->name || $self->determine_NAME($args);
+ $args->{VERSION} = $self->version || $self->determine_VERSION($args);
+ $args->{NAME} =~ s/-/::/g;
+ if ( $self->tests ) {
+ $args->{test} = { TESTS => $self->tests };
+ }
+ if ($] >= 5.005) {
+ $args->{ABSTRACT} = $self->abstract;
+ $args->{AUTHOR} = $self->author;
+ }
+ if ( eval($ExtUtils::MakeMaker::VERSION) >= 6.10 ) {
+ $args->{NO_META} = 1;
+ }
+ if ( eval($ExtUtils::MakeMaker::VERSION) > 6.17 and $self->sign ) {
+ $args->{SIGN} = 1;
+ }
+ unless ( $self->is_admin ) {
+ delete $args->{SIGN};
+ }
+
+ # merge both kinds of requires into prereq_pm
+ my $prereq = ($args->{PREREQ_PM} ||= {});
+ %$prereq = ( %$prereq,
+ map { @$_ }
+ map { @$_ }
+ grep $_,
+ ($self->build_requires, $self->requires)
+ );
+
+ # merge both kinds of requires into prereq_pm
+ my $subdirs = ($args->{DIR} ||= []);
+ if ($self->bundles) {
+ foreach my $bundle (@{ $self->bundles }) {
+ my ($file, $dir) = @$bundle;
+ push @$subdirs, $dir if -d $dir;
+ delete $prereq->{$file};
+ }
+ }
+
+ if ( my $perl_version = $self->perl_version ) {
+ eval "use $perl_version; 1"
+ or die "ERROR: perl: Version $] is installed, "
+ . "but we need version >= $perl_version";
+ }
+
+ $args->{INSTALLDIRS} = $self->installdirs;
+
+ my %args = map { ( $_ => $args->{$_} ) } grep {defined($args->{$_})} keys %$args;
+
+ my $user_preop = delete $args{dist}->{PREOP};
+ if (my $preop = $self->admin->preop($user_preop)) {
+ $args{dist} = $preop;
+ }
+
+ my $mm = ExtUtils::MakeMaker::WriteMakefile(%args);
+ $self->fix_up_makefile($mm->{FIRST_MAKEFILE} || 'Makefile');
+}
+
+sub fix_up_makefile {
+ my $self = shift;
+ my $makefile_name = shift;
+ my $top_class = ref($self->_top) || '';
+ my $top_version = $self->_top->VERSION || '';
+
+ my $preamble = $self->preamble
+ ? "# Preamble by $top_class $top_version\n"
+ . $self->preamble
+ : '';
+ my $postamble = "# Postamble by $top_class $top_version\n"
+ . ($self->postamble || '');
+
+ local *MAKEFILE;
+ open MAKEFILE, "< $makefile_name" or die "fix_up_makefile: Couldn't open $makefile_name: $!";
+ my $makefile = do { local $/; <MAKEFILE> };
+ close MAKEFILE or die $!;
+
+ $makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /;
+ $makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g;
+ $makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g;
+ $makefile =~ s/^(FULLPERL = .*)/$1 "-Iinc"/m;
+ $makefile =~ s/^(PERL = .*)/$1 "-Iinc"/m;
+
+ # Module::Install will never be used to build the Core Perl
+ # Sometimes PERL_LIB and PERL_ARCHLIB get written anyway, which breaks
+ # PREFIX/PERL5LIB, and thus, install_share. Blank them if they exist
+ $makefile =~ s/^PERL_LIB = .+/PERL_LIB =/m;
+ #$makefile =~ s/^PERL_ARCHLIB = .+/PERL_ARCHLIB =/m;
+
+ # Perl 5.005 mentions PERL_LIB explicitly, so we have to remove that as well.
+ $makefile =~ s/("?)-I\$\(PERL_LIB\)\1//g;
+
+ # XXX - This is currently unused; not sure if it breaks other MM-users
+ # $makefile =~ s/^pm_to_blib\s+:\s+/pm_to_blib :: /mg;
+
+ open MAKEFILE, "> $makefile_name" or die "fix_up_makefile: Couldn't open $makefile_name: $!";
+ print MAKEFILE "$preamble$makefile$postamble" or die $!;
+ close MAKEFILE or die $!;
+
+ 1;
+}
+
+sub preamble {
+ my ($self, $text) = @_;
+ $self->{preamble} = $text . $self->{preamble} if defined $text;
+ $self->{preamble};
+}
+
+sub postamble {
+ my ($self, $text) = @_;
+ $self->{postamble} ||= $self->admin->postamble;
+ $self->{postamble} .= $text if defined $text;
+ $self->{postamble}
+}
+
+1;
+
+__END__
+
+#line 363
Modified: jifty/trunk/examples/Yada/inc/Module/Install/Metadata.pm
==============================================================================
--- /jifty/trunk/examples/Example-Todo/inc/Module/Install/Metadata.pm (original)
+++ jifty/trunk/examples/Yada/inc/Module/Install/Metadata.pm Mon Jun 11 05:05:43 2007
@@ -6,14 +6,14 @@
use vars qw{$VERSION $ISCORE @ISA};
BEGIN {
- $VERSION = '0.64';
+ $VERSION = '0.67';
$ISCORE = 1;
@ISA = qw{Module::Install::Base};
}
my @scalar_keys = qw{
name module_name abstract author version license
- distribution_type perl_version tests
+ distribution_type perl_version tests installdirs
};
my @tuple_keys = qw{
@@ -56,9 +56,23 @@
};
}
+# configure_requires is currently a null-op
+sub configure_requires { 1 }
+
+# Aliases for build_requires that will have alternative
+# meanings in some future version of META.yml.
+sub test_requires { shift->build_requires(@_) }
+sub install_requires { shift->build_requires(@_) }
+
+# Aliases for installdirs options
+sub install_as_core { $_[0]->installdirs('perl') }
+sub install_as_cpan { $_[0]->installdirs('site') }
+sub install_as_site { $_[0]->installdirs('site') }
+sub install_as_vendor { $_[0]->installdirs('vendor') }
+
sub sign {
my $self = shift;
- return $self->{'values'}{'sign'} if defined wantarray and !@_;
+ return $self->{'values'}{'sign'} if defined wantarray and ! @_;
$self->{'values'}{'sign'} = ( @_ ? $_[0] : 1 );
return $self;
}
@@ -279,9 +293,11 @@
if (
$self->_slurp($file) =~ m/
- =head \d \s+
- (?:licen[cs]e|licensing|copyright|legal)\b
- (.*?)
+ (
+ =head \d \s+
+ (?:licen[cs]e|licensing|copyright|legal)\b
+ .*?
+ )
(=head\\d.*|=cut.*|)
\z
/ixms
@@ -289,19 +305,24 @@
{
my $license_text = $1;
my @phrases = (
- 'under the same (?:terms|license) as perl itself' => 'perl',
- 'GNU public license' => 'gpl',
- 'GNU lesser public license' => 'gpl',
- 'BSD license' => 'bsd',
- 'Artistic license' => 'artistic',
- 'GPL' => 'gpl',
- 'LGPL' => 'lgpl',
- 'BSD' => 'bsd',
- 'Artistic' => 'artistic',
+ 'under the same (?:terms|license) as perl itself' => 'perl', 1,
+ 'GNU public license' => 'gpl', 1,
+ 'GNU lesser public license' => 'gpl', 1,
+ 'BSD license' => 'bsd', 1,
+ 'Artistic license' => 'artistic', 1,
+ 'GPL' => 'gpl', 1,
+ 'LGPL' => 'lgpl', 1,
+ 'BSD' => 'bsd', 1,
+ 'Artistic' => 'artistic', 1,
+ 'MIT' => 'mit', 1,
+ 'proprietary' => 'proprietary', 0,
);
- while ( my ( $pattern, $license ) = splice( @phrases, 0, 2 ) ) {
+ while ( my ($pattern, $license, $osi) = splice(@phrases, 0, 3) ) {
$pattern =~ s{\s+}{\\s+}g;
if ( $license_text =~ /\b$pattern\b/i ) {
+ if ( $osi and $license_text =~ /All rights reserved/i ) {
+ warn "LEGAL WARNING: 'All rights reserved' may invalidate Open Source licenses. Consider removing it.";
+ }
$self->license($license);
return 1;
}
Added: jifty/trunk/examples/Yada/inc/Module/Install/Win32.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/examples/Yada/inc/Module/Install/Win32.pm Mon Jun 11 05:05:43 2007
@@ -0,0 +1,65 @@
+#line 1
+package Module::Install::Win32;
+
+use strict;
+use Module::Install::Base;
+
+use vars qw{$VERSION $ISCORE @ISA};
+BEGIN {
+ $VERSION = '0.67';
+ $ISCORE = 1;
+ @ISA = qw{Module::Install::Base};
+}
+
+# determine if the user needs nmake, and download it if needed
+sub check_nmake {
+ my $self = shift;
+ $self->load('can_run');
+ $self->load('get_file');
+
+ require Config;
+ return unless (
+ $^O eq 'MSWin32' and
+ $Config::Config{make} and
+ $Config::Config{make} =~ /^nmake\b/i and
+ ! $self->can_run('nmake')
+ );
+
+ print "The required 'nmake' executable not found, fetching it...\n";
+
+ require File::Basename;
+ my $rv = $self->get_file(
+ url => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe',
+ ftp_url => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe',
+ local_dir => File::Basename::dirname($^X),
+ size => 51928,
+ run => 'Nmake15.exe /o > nul',
+ check_for => 'Nmake.exe',
+ remove => 1,
+ );
+
+ if (!$rv) {
+ die <<'END_MESSAGE';
+
+-------------------------------------------------------------------------------
+
+Since you are using Microsoft Windows, you will need the 'nmake' utility
+before installation. It's available at:
+
+ http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe
+ or
+ ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe
+
+Please download the file manually, save it to a directory in %PATH% (e.g.
+C:\WINDOWS\COMMAND\), then launch the MS-DOS command line shell, "cd" to
+that directory, and run "Nmake15.exe" from there; that will create the
+'nmake.exe' file needed by this module.
+
+You may then resume the installation process described in README.
+
+-------------------------------------------------------------------------------
+END_MESSAGE
+ }
+}
+
+1;
Modified: jifty/trunk/examples/Yada/inc/Module/Install/WriteAll.pm
==============================================================================
--- /jifty/trunk/examples/Example-Todo/inc/Module/Install/WriteAll.pm (original)
+++ jifty/trunk/examples/Yada/inc/Module/Install/WriteAll.pm Mon Jun 11 05:05:43 2007
@@ -6,7 +6,7 @@
use vars qw{$VERSION $ISCORE @ISA};
BEGIN {
- $VERSION = '0.64';
+ $VERSION = '0.67';
$ISCORE = 1;
@ISA = qw{Module::Install::Base};
}
Added: jifty/trunk/examples/Yada/lib/Yada/Model/Todo.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/examples/Yada/lib/Yada/Model/Todo.pm Mon Jun 11 05:05:43 2007
@@ -0,0 +1,17 @@
+use strict;
+use warnings;
+
+package Yada::Model::Todo;
+use Jifty::DBI::Schema;
+
+use Yada::Record schema {
+
+ column done => type is 'bool';
+ column description => type is 'text';
+
+};
+
+# Your model-specific methods go here.
+
+1;
+
Added: jifty/trunk/examples/Yada/lib/Yada/Model/User.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/examples/Yada/lib/Yada/Model/User.pm Mon Jun 11 05:05:43 2007
@@ -0,0 +1,11 @@
+package Yada::Model::User;
+#use base 'Example::Todo::Record';
+use Jifty::DBI::Schema;
+
+use Yada::Record schema {};
+
+use Jifty::Plugin::User::Mixin::Model::User;
+use Jifty::Plugin::Authentication::Password::Mixin::Model::User;
+use Jifty::Plugin::OpenID::Mixin::Model::User;
+
+1;
Added: jifty/trunk/examples/Yada/lib/Yada/View.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/examples/Yada/lib/Yada/View.pm Mon Jun 11 05:05:43 2007
@@ -0,0 +1,17 @@
+package Yada::View;
+use Jifty::View::Declare -base;
+
+template 'index.html' => page {
+ my $self = shift;
+ title { _('Yada!') };
+
+ form {
+ render_region(name => 'list', path => '/todo/list');
+ }
+};
+
+require Yada::View::Todo;
+alias Yada::View::Todo under '/todo';
+
+
+1;
Added: jifty/trunk/examples/Yada/lib/Yada/View/Todo.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/examples/Yada/lib/Yada/View/Todo.pm Mon Jun 11 05:05:43 2007
@@ -0,0 +1,11 @@
+package Yada::View::Todo;
+use strict;
+use Jifty::View::Declare -base;
+use base 'Jifty::View::Declare::CRUD';
+
+sub object_type { 'Todo' }
+
+sub fragment_for { return "/todo/$_[1]" }
+
+
+1;
Modified: jifty/trunk/examples/Yada/t/00-model-Todo.t
==============================================================================
--- /jifty/trunk/examples/Example-Todo/t/00-model-Todo.t (original)
+++ jifty/trunk/examples/Yada/t/00-model-Todo.t Mon Jun 11 05:05:43 2007
@@ -11,14 +11,14 @@
use Jifty::Test tests => 11;
# Make sure we can load the model
-use_ok('Example::Todo::Model::Todo');
+use_ok('Yada::Model::Todo');
# Grab a system user
-my $system_user = Example::Todo::CurrentUser->superuser;
+my $system_user = Yada::CurrentUser->superuser;
ok($system_user, "Found a system user");
# Try testing a create
-my $o = Example::Todo::Model::Todo->new(current_user => $system_user);
+my $o = Yada::Model::Todo->new(current_user => $system_user);
my ($id) = $o->create();
ok($id, "Todo create returned success");
ok($o->id, "New Todo has valid id set");
@@ -30,7 +30,7 @@
isnt($o->id, $id, "And it is different from the previous one");
# Searches in general
-my $collection = Example::Todo::Model::TodoCollection->new(current_user => $system_user);
+my $collection = Yada::Model::TodoCollection->new(current_user => $system_user);
$collection->unlimit;
is($collection->count, 2, "Finds two records");
More information about the Jifty-commit
mailing list