- Timestamp:
- 10/06/08 14:16:06 (3 months ago)
- Location:
- trunk/extra/moddev
- Files:
-
- 6 modified
-
src/ebox-moddev-create (modified) (1 diff)
-
src/ebox-moddev-create.in (modified) (1 diff)
-
src/ebox-moddev-model.in (modified) (12 diffs)
-
stubs/Makefile.am (modified) (1 diff)
-
stubs/src/MainClass.pm.mas (modified) (1 diff)
-
stubs/src/Model/FormModel.pm.mas (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/extra/moddev/src/ebox-moddev-create
r11472 r11476 148 148 my ($interp, $output, $options) = @_; 149 149 150 my $dir = $options->{destdir} . '/src/EBox/Model'; 151 my $mainClass = 'Settings.pm'; 152 mkdir ($dir) or die "Can't create $dir"; 153 154 my $comp = $interp->make_component( 155 comp_file => STUBS_PATH . '/src/Model/Makefile.am.mas', 156 ); 157 ${$output} = ''; 158 $interp->exec($comp, 159 ( module => $options->{mainClass}, 160 models => ('Settings.pm'))); 161 write_file($dir . '/Makefile.am', ${$output}); 162 163 # TableModel or FormModel ? 164 my $template; 165 if ($options->{model} eq 'table') { 166 $template = '/src/Model/TableModel.pm.mas'; 167 } else { 168 $template = '/src/Model/FormModel.pm.mas'; 169 } 170 $comp = $interp->make_component( 171 comp_file => STUBS_PATH . $template, 172 ); 173 ${$output} = ''; 174 $interp->exec($comp, 175 ( mainClass => 'EBox::' . $options->{mainClass}, 176 modelName => 'Settings', 177 printableTableName => 'Settings', 178 rowName => 'Setting', 179 modelDomain => $options->{mainClass} 180 )); 181 write_file("$dir/Settings.pm", ${$output}); 150 my $dir = $options->{destdir}; 151 my $mainClass = $options->{mainClass}; 152 my $params = " --main-class $mainClass --name Settings" . 153 " --field field1:Text --field field2:Text" . 154 " --destdir $dir"; 155 system("ebox-moddev-model $params"); 182 156 } 183 157 -
trunk/extra/moddev/src/ebox-moddev-create.in
r11471 r11476 148 148 my ($interp, $output, $options) = @_; 149 149 150 my $dir = $options->{destdir} . '/src/EBox/Model'; 151 my $mainClass = 'Settings.pm'; 152 mkdir ($dir) or die "Can't create $dir"; 153 154 my $comp = $interp->make_component( 155 comp_file => STUBS_PATH . '/src/Model/Makefile.am.mas', 156 ); 157 ${$output} = ''; 158 $interp->exec($comp, 159 ( module => $options->{mainClass}, 160 models => ('Settings.pm'))); 161 write_file($dir . '/Makefile.am', ${$output}); 162 163 # TableModel or FormModel ? 164 my $template; 165 if ($options->{model} eq 'table') { 166 $template = '/src/Model/TableModel.pm.mas'; 167 } else { 168 $template = '/src/Model/FormModel.pm.mas'; 169 } 170 $comp = $interp->make_component( 171 comp_file => STUBS_PATH . $template, 172 ); 173 ${$output} = ''; 174 $interp->exec($comp, 175 ( mainClass => 'EBox::' . $options->{mainClass}, 176 modelName => 'Settings', 177 printableTableName => 'Settings', 178 rowName => 'Setting', 179 modelDomain => $options->{mainClass} 180 )); 181 write_file("$dir/Settings.pm", ${$output}); 150 my $dir = $options->{destdir}; 151 my $mainClass = $options->{mainClass}; 152 my $params = " --main-class $mainClass --name Settings" . 153 " --field field1:Text --field field2:Text" . 154 " --destdir $dir"; 155 system("ebox-moddev-model $params"); 182 156 } 183 157 -
trunk/extra/moddev/src/ebox-moddev-model.in
r11472 r11476 33 33 sub _printUsage 34 34 { 35 print STDERR "\nUsage: $0 -- name name --field field1:type1 [Options]\n\n";35 print STDERR "\nUsage: $0 --main-class class --name name --field field1:type1 [Options]\n\n"; 36 36 print STDERR "Options:\n"; 37 37 print STDERR "\t--model form | table. Default: form\n"; … … 48 48 my %validTypes = map {$_ => 1} types(); 49 49 my %names; 50 50 my @fields; 51 51 for my $pair (@{$fields}) { 52 52 unless ($pair =~ /:/) { … … 64 64 } else { 65 65 $names{$name} = $type; 66 } 67 } 68 69 return %names; 66 push (@fields, { name => $name, type => $type}); 67 } 68 } 69 70 return \@fields; 70 71 } 71 72 … … 77 78 destdir => undef, 78 79 model => 'form', 80 mainClass => undef, 79 81 ); 80 82 my $help; … … 82 84 my @fields; 83 85 my $optionsOk = GetOptions( 86 'main-class=s' => \$options{mainClass}, 84 87 'name=s' => \$options{name}, 85 88 'fields=s' => $options{fields}, … … 89 92 'info' => \$info, 90 93 ); 91 %options{parsedFields} = _parseFields($options{fields});94 $options{parsedFields} = _parseFields($options{fields}); 92 95 if (not $optionsOk or $info or $help) { 93 96 _printUsage(); … … 106 109 } 107 110 108 109 $options{destdir} .= '/' . $options{moduleName};110 111 111 unless ( -d $options{destdir} ) { 112 112 die "$options{destdir} does not exist!!"; … … 116 116 } 117 117 118 sub _models 119 { 120 my ($dir) = @_; 121 my @models ; 122 opendir ( my $dirFH, $dir ); 123 while ( defined ( my $file = readdir ( $dirFH ))) { 124 next unless ( $file =~ m/.*\.pm/ ); 125 push(@models, $file); 126 } 127 return \@models; 128 } 129 sub _makefile 130 { 131 my ($interp, $output, $options) = @_; 132 133 my $dir = $options->{destdir} . '/src/EBox/Model'; 134 135 my $comp = $interp->make_component( 136 comp_file => STUBS_PATH . '/src/Model/Makefile.am.mas', 137 ); 138 ${$output} = ''; 139 $interp->exec($comp, 140 ( module => $options->{mainClass}, 141 models => _models($dir))); 142 143 write_file($dir . '/Makefile.am', ${$output}); 144 } 145 118 146 sub _src_EBox_Model 119 147 { … … 121 149 122 150 my $dir = $options->{destdir} . '/src/EBox/Model'; 123 my $mainClass = 'Settings.pm'; 124 mkdir ($dir) or die "Can't create $dir"; 125 151 my $mainClass = $options->{name} . '.pm'; 152 mkdir ($dir) unless (-d $dir); 153 154 # TableModel or FormModel ? 155 my $template = '/src/Model/FormModel.pm.mas'; 156 126 157 my $comp = $interp->make_component( 127 comp_file => STUBS_PATH . '/src/Model/Makefile.am.mas',128 );129 ${$output} = '';130 $interp->exec($comp,131 ( module => $options->{mainClass},132 models => ('Settings.pm')));133 write_file($dir . '/Makefile.am', ${$output});134 135 # TableModel or FormModel ?136 my $template;137 if ($options->{model} eq 'table') {138 $template = '/src/Model/TableModel.pm.mas';139 } else {140 $template = '/src/Model/FormModel.pm.mas';141 }142 $comp = $interp->make_component(143 158 comp_file => STUBS_PATH . $template, 144 159 ); … … 146 161 $interp->exec($comp, 147 162 ( mainClass => 'EBox::' . $options->{mainClass}, 148 modelName => 'Settings', 149 printableTableName => 'Settings', 150 rowName => 'Setting', 151 modelDomain => $options->{mainClass} 163 modelName => $options->{name}, 164 printableTableName => $options->{name}, 165 rowName => $options->{name}, 166 modelDomain => $options->{mainClass}, 167 fields => $options->{parsedFields}, 152 168 )); 153 write_file("$dir/Settings.pm", ${$output}); 169 write_file("$dir/$mainClass", ${$output}); 170 171 } 172 173 sub _addModelsToMainClass 174 { 175 my ($interp, $output, $options) = @_; 176 177 my $mainClass = $options->{mainClass}; 178 my $file = $options->{destdir} . "/src/EBox/$mainClass.pm"; 179 my $dir = $options->{destdir} . "/src/EBox/Model"; 180 181 my $code = " return [\n"; 182 for my $model (@{_models($dir)}) { 183 $code .= ' ' x 8; 184 $code .= "'EBox::${mainClass}::Model::$model',\n"; 185 } 186 $code .= " ];\n"; 187 188 my $fd; 189 open($fd, $file) or die "Can open $file\n"; 190 my @oldFile = <$fd>; 191 close($fd); 192 193 open($fd, ">$file"); 194 my $inFunction = undef; 195 for my $line (@oldFile) { 196 if ($line =~ /sub modelClasses/) { 197 $inFunction = 1; 198 } elsif ($inFunction and $line =~ /{/) { 199 print $fd "{\n$code"; 200 next; 201 } elsif ($inFunction and $line =~ /}/) { 202 $inFunction = undef 203 } elsif ($inFunction) { 204 next; 205 } 206 print $fd $line; 207 } 208 close($fd); 154 209 } 155 210 … … 160 215 161 216 my $dir = $options->{destdir}; 162 163 mkdir $dir or die "Can't create dir $dir";164 217 165 218 my $output; … … 168 221 169 222 _src_EBox_Model($interp, \$output, $options); 223 _makefile($interp, \$output, $options); 224 _addModelsToMainClass($interp, \$output, $options); 170 225 171 226 } -
trunk/extra/moddev/stubs/Makefile.am
r11471 r11476 51 51 52 52 EXTRA_DIST = $(stubs_DATA) $(stubsdebian_DATA) $(stubsm4_DATA) \ 53 $(stubsmigration_DATA) $(stubsschema _DATA) $(stubssrc_DATA) \53 $(stubsmigration_DATA) $(stubsschemas_DATA) $(stubssrc_DATA) \ 54 54 $(stubsmodel_DATA) $(stubstools_DATA) $(stubsstubs_DATA) 55 55 -
trunk/extra/moddev/stubs/src/MainClass.pm.mas
r11471 r11476 59 59 # 60 60 # <EBox::Model::ModelProvider::modelClasses> 61 sub modelClasses { 61 sub modelClasses 62 { 62 63 my ($self) = @_; 63 64 -
trunk/extra/moddev/stubs/src/Model/FormModel.pm.mas
r11471 r11476 5 5 $rowName 6 6 $modelDomain 7 $modelType => 'form' 8 @fields => () 7 9 </%args> 8 10 # Copyright … … 35 37 use warnings; 36 38 39 % if ($modelType eq 'form') { 37 40 use base 'EBox::Model::DataForm'; 41 % } else { 42 use base 'EBox::Model::DataTable'; 43 % } 38 44 39 45 sub new … … 53 59 my @tableHead = 54 60 ( 55 new EBox::Types::Text( 56 'fieldName' => 'field1', 57 'printableName' => __('Field 1'), 61 % for my $field (@fields) { 62 new EBox::Types::<% $field->{type} %>( 63 'fieldName' => '<% $field->{name} %>', 64 'printableName' => __('<% $field->{name} %>'), 58 65 'size' => '8', 59 66 'unique' => 1, 60 67 'editable' => 1 61 68 ), 62 new EBox::Types::Text( 63 'fieldName' => 'field2', 64 'printableName' => __('Field 2'), 65 'size' => '8', 66 'unique' => 1, 67 'editable' => 1 68 ), 69 % } 69 70 ); 70 71 71 my $dataTable = 72 72 {
