source: projects/vine-spec-skeleton/tags/release-0.1/lib/VineLinux/VSS/Type/Elisp.pm @ 488

Revision 488, 2.8 KB checked in by iwaim, 14 years ago (diff)

vine-spec-skeleton: 0.1

Line 
1package VineLinux::VSS::Type::Elisp;
2
3use base qw( VineLinux::VSS::Type );
4
5use VineLinux::VSS::Skeleton::Elisp::InitEl;
6use VineLinux::VSS::Skeleton::Elisp::Spec;
7use VineLinux::VSS::Skeleton::Elisp::InstallSh;
8use VineLinux::VSS::Skeleton::Elisp::RemoveSh;
9use VineLinux::VSS::Skeleton::Elisp::VineDefaultEl;
10
11sub generate {
12    my $class = shift;
13
14    my $filename = '';
15    my @skeleton_data;
16    my $tmpl;
17
18    my $package_name = 'sample-mode';
19    my $packager_name = 'packager';
20    my $packager_fullname = 'Packager Name';
21    my $packager_email = 'foo@example.org';
22    my %params = (
23        package_name => $package_name,
24        packager_fullname => $packager_fullname,
25        packager_name => $packager_name,
26        packager_email => $packager_email,
27        generate_date => $class->_current_time
28    );
29   
30    # <package>-init.el
31    @skeleton_data = <VineLinux::VSS::Skeleton::Elisp::InitEl::DATA>;
32    $tmpl = HTML::Template->new(arrayref => \@skeleton_data,
33                                die_on_bad_params => 0);
34    $tmpl->param(\%params);
35    $filename = $package_name . '-init.el';
36    $class->_generate_file($filename, $tmpl->output);
37
38
39    # vine-default-<package>.el
40    @skeleton_data = <VineLinux::VSS::Skeleton::Elisp::VineDefaultEl::DATA>;
41    $tmpl = HTML::Template->new(arrayref => \@skeleton_data,
42                                die_on_bad_params => 0);
43    $tmpl->param(\%params);
44    $filename = 'vine-default-' . $package_name . '.el';
45    $class->_generate_file($filename, $tmpl->output);
46
47   
48    # <package>.spec
49    @skeleton_data = <VineLinux::VSS::Skeleton::Elisp::Spec::DATA>;
50    $tmpl = HTML::Template->new(arrayref => \@skeleton_data,
51                                die_on_bad_params => 0);
52    $tmpl->param(\%params);
53    $filename = $package_name . '.spec';
54    $class->_generate_file($filename, $tmpl->output);
55
56
57    # <package>-install.sh
58    @skeleton_data = <VineLinux::VSS::Skeleton::Elisp::InstallSh::DATA>;
59    $tmpl = HTML::Template->new(arrayref => \@skeleton_data,
60                                die_on_bad_params => 0);
61    $tmpl->param(\%params);
62    $filename = $package_name . '-install.sh';
63    $class->_generate_file($filename, $tmpl->output);
64
65
66    # <package>-remove.sh
67    @skeleton_data = <VineLinux::VSS::Skeleton::Elisp::RemoveSh::DATA>;
68    $tmpl = HTML::Template->new(arrayref => \@skeleton_data,
69                                die_on_bad_params => 0);
70    $tmpl->param(\%params);
71    $filename = $package_name . '-remove.sh';
72    $class->_generate_file($filename, $tmpl->output);
73}
74
75sub _current_time {
76    my $class = shift;
77    my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time);
78
79    my $e_mon = sprintf("%s", 
80                        ("Jan", "Feb", "Mar", "Apr", "May", "Jun",
81                         "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")[$mon]);
82    my $e_week = sprintf("%s", 
83                         ("Sun", "Mon", "Tue", "Wed", "The", "Fri", "Sat")[$wday]);
84   
85    return sprintf("%s %s %02d %04d", $e_week, $e_mon, $mday, $year + 1900);
86}
87
881;
89
90
Note: See TracBrowser for help on using the repository browser.