File Coverage

blib/lib/ZConf/DevTemplate.pm
Criterion Covered Total %
statement 15 199 7.5
branch 0 42 0.0
condition n/a
subroutine 5 10 50.0
pod 5 5 100.0
total 25 256 9.7


line stmt bran cond sub pod time code
1             package ZConf::DevTemplate;
2              
3 1     1   25601 use warnings;
  1         2  
  1         33  
4 1     1   6 use strict;
  1         1  
  1         35  
5 1     1   558 use ZConf::template;
  1         3  
  1         31  
6 1     1   642 use ZConf::template::GUI;
  1         4  
  1         35  
7 1     1   861 use String::ShellQuote;
  1         908  
  1         2134  
8              
9             =head1 NAME
10              
11             ZConf::DevTemplate - Creates a the basic framework for a ZConf based module.
12              
13             =head1 VERSION
14              
15             Version 0.1.1
16              
17             =cut
18              
19             our $VERSION = '0.1.1';
20              
21             =head1 SYNOPSIS
22              
23             use ZConf::DevTemplate;
24              
25             my $zcdt = ZConf::DevTemplate->new();
26              
27              
28             =head1 METHODS
29              
30             =head2 new
31              
32             =cut
33              
34             sub new{
35 0     0 1   my %args;
36 0 0         if(defined($_[1])){
37 0           %args= %{$_[1]};
  0            
38             }
39            
40 0           my $self={error=>undef, perror=>undef, errorString=>undef, module=>'ZConf-DevTemplate'};
41 0           bless $self;
42              
43 0           return $self;
44             }
45              
46             =head2 create
47              
48             This creates a new module.
49              
50             =head3 args hash
51              
52             =head4 name
53              
54             This is the name of the module.
55              
56             =head4 email
57              
58             This is the email address of the author.
59              
60             =head4 author
61              
62             This is author's name.
63              
64             =head4 config
65              
66             This is the ZConf config the module will use.
67              
68             my $module=$zcdt->processGUI({
69             name=>'Some::Module',
70             email=>'foo@bar',
71             author=>'Foo Bar',
72             config=>'someModule',
73             });
74             if($zcdt->{error}){
75             print "Error!\n";
76             }
77              
78             =cut
79              
80             sub create{
81 0     0 1   my $self=$_[0];
82 0           my %args;
83 0 0         if(defined($_[1])){
84 0           %args= %{$_[1]};
  0            
85             }
86 0           my $function='create';
87              
88 0           $self->errorblank;
89              
90             #make sure a name is specified
91 0 0         if (!defined( $args{name} )) {
92 0           $self->{error}=1;
93 0           $self->{errorString}='No name for the module specified';
94 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
95 0           return undef;
96             }
97              
98             #make sure a name is specified
99 0 0         if (!defined( $args{email} )) {
100 0           $self->{error}=1;
101 0           $self->{errorString}='No email for author specified';
102 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
103 0           return undef;
104             }
105              
106             #make sure a name is specified
107 0 0         if (!defined( $args{config} )) {
108 0           $self->{error}=1;
109 0           $self->{errorString}='No ZConf config specified';
110 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
111 0           return undef;
112             }
113              
114             #make sure a name is specified
115 0 0         if (!defined( $args{author} )) {
116 0           $self->{error}=1;
117 0           $self->{errorString}='No name for the author specified';
118 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
119 0           return undef;
120             }
121              
122             #creates the module stuff
123 0           system('module-starter --module='.shell_quote($args{name}).' --email='.shell_quote($args{email}).' --author='.shell_quote($args{author}));
124              
125             #processes the module
126 0           my $module=$self->processTemplate(\%args);
127 0 0         if ($self->{error}) {
128 0           warn($self->{module}.' '.$function.': processTemplate errored');
129 0           return undef;
130             }
131              
132             #processes the GUI
133 0           my $gui=$self->processGUI(\%args);
134 0 0         if ($self->{error}) {
135 0           warn($self->{module}.' '.$function.': processGUI errored');
136 0           return undef;
137             }
138              
139             #writes out the module stuff
140 0           my $modulepath=$args{name}.'/lib/';
141 0           $modulepath=~s/\:\:/\-/g;
142 0           my $modulepath2=$args{name};
143 0           $modulepath2=~s/\:\:/\//g;
144 0           $modulepath=$modulepath.$modulepath2.'.pm';
145 0           open(MODULE, '>', $modulepath);
146 0           print MODULE $module;
147 0           close(MODULE);
148              
149             #writes out the GUI stuff
150 0           my $guipath=$args{name}.'/lib/';
151 0           $guipath=~s/\:\:/\-/g;
152 0           my $guipath2=$args{name};
153 0           $guipath2=~s/\:\:/\//g;
154 0           mkdir($guipath.$guipath2);
155 0           $guipath=$guipath.$guipath2.'/GUI.pm';
156 0           open(GUI, '>', $guipath);
157 0           print GUI $gui;
158 0           close(GUI);
159              
160 0           return 1;
161             }
162              
163             =head2 processGUI
164              
165             This processes 'ZConf::template::GUI' and returns a string
166             containing the module.
167              
168             It takes one arguement and that is a hash.
169              
170             =head3 args hash
171              
172             =head4 name
173              
174             This is the name of the module.
175              
176             =head4 email
177              
178             This is the email address of the author.
179              
180             =head4 author
181              
182             This is author's name.
183              
184             =head4 config
185              
186             This is the ZConf config the module will use.
187              
188             my $module=$zcdt->processGUI({
189             name=>'Some::Module',
190             email=>'foo@bar',
191             author=>'Foo Bar',
192             config=>'someModule',
193             });
194             if($zcdt->{error}){
195             print "Error!\n";
196             }
197              
198             =cut
199              
200             sub processGUI{
201 0     0 1   my $self=$_[0];
202 0           my %args;
203 0 0         if(defined($_[1])){
204 0           %args= %{$_[1]};
  0            
205             }
206 0           my $function='processGUI';
207              
208 0           $self->errorblank;
209              
210             #make sure a name is specified
211 0 0         if (!defined( $args{name} )) {
212 0           $self->{error}=1;
213 0           $self->{errorString}='No name for the module specified';
214 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
215 0           return undef;
216             }
217              
218             #make sure a name is specified
219 0 0         if (!defined( $args{email} )) {
220 0           $self->{error}=1;
221 0           $self->{errorString}='No email for author specified';
222 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
223 0           return undef;
224             }
225              
226             #make sure a name is specified
227 0 0         if (!defined( $args{config} )) {
228 0           $self->{error}=1;
229 0           $self->{errorString}='No ZConf config specified';
230 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
231 0           return undef;
232             }
233              
234             #make sure a name is specified
235 0 0         if (!defined( $args{author} )) {
236 0           $self->{error}=1;
237 0           $self->{errorString}='No name for the author specified';
238 0           warn($self->{module}.' '.$function.':'.$self->{error}.': '.$self->{errorString});
239 0           return undef;
240             }
241              
242 0           my @lines;
243 0 0         if (open(TEMPLATE, $INC{'ZConf/template/GUI.pm'})) {
244 0           my $line=