Apache-SWIT
view release on metacpan or search on metacpan
lib/Apache/SWIT/Maker.pm view on Meta::CPAN
=head1 NAME
Apache::SWIT::Maker - creates various skeleton files for your SWIT project.
=head1 METHODS
=cut
use strict;
use warnings FATAL => 'all';
package Apache::SWIT::Maker;
use base 'Class::Accessor';
use File::Path;
use File::Basename qw(dirname basename);
use File::Copy;
use Crypt::CBC;
use Cwd qw(abs_path getcwd);
use Apache::SWIT::Maker::GeneratorsQueue;
use Apache::SWIT::Maker::FileWriterData;
use Apache::SWIT::Maker::Conversions;
use Apache::SWIT::Maker::Config;
use Apache::SWIT::Maker::Makefile;
use File::Slurp;
use Digest::MD5 qw(md5_hex);
use Apache::SWIT::Maker::Manifest;
use ExtUtils::Manifest qw(maniread manicopy);
use File::Temp qw(tempdir);
use Data::Dumper;
__PACKAGE__->mk_accessors(qw(file_writer));
my @_initial_skels = qw(apache_test apache_test_run dual_001_load startup);
sub _load_skeleton {
my ($class, $skel_class, $func) = @_;
my $s = 'Apache::SWIT::Maker::Skeleton::' . $skel_class;
conv_eval_use($s);
no strict 'refs';
*{ __PACKAGE__ . "::$func" } = sub { return $s; }
unless __PACKAGE__->can($func);
}
__PACKAGE__->_load_skeleton(conv_table_to_class($_), $_) for @_initial_skels;
my %_page_skels = (qw(skel_page Page skel_template Template
skel_ht_page HT::Page skel_ht_template HT::Template
skel_db_class DB::Class scaffold_dual_test Scaffold::DualTest)
, map { ("scaffold_".lc($_), "Scaffold::$_"
, "scaffold_".lc($_)."_template"
, "Scaffold::$_"."Template") } qw(List Form Info));
while (my ($n, $v) = each %_page_skels) {
__PACKAGE__->_load_skeleton($v, $n);
}
sub makefile_class { return 'Apache::SWIT::Maker::Makefile'; }
sub new {
my $self = shift->SUPER::new(@_);
$self->{file_writer} ||= Apache::SWIT::Maker::FileWriterData->new;
return $self;
}
sub schema_class {
return Apache::SWIT::Maker::Config->instance->root_class
. '::DB::Schema';
}
sub write_swit_yaml {
swmani_write_file('conf/swit.yaml', "");
Apache::SWIT::Maker::Config->instance->save;
}
sub write_makefile_pl {
my $self = shift;
my $args = Apache::SWIT::Maker::Makefile::Args();
my $mc = $self->makefile_class;
write_file('Makefile.PL', <<ENDM);
use strict;
use warnings FATAL => 'all';
use $mc;
$mc\->new->write_makefile$args;
ENDM
}
sub add_class {
( run in 0.897 second using v1.01-cache-2.11-cpan-39bf76dae61 )