43 |
43 |
|
44 |
44 |
my ($opt_list, $opt_tree, $opt_rtree, $opt_nodeps, $opt_graphviz, $opt_help);
|
45 |
45 |
my ($opt_user, $opt_apply, $opt_applied, $opt_unapplied, $opt_format, $opt_test_utf8);
|
46 |
|
my ($opt_dbhost, $opt_dbport, $opt_dbname, $opt_dbuser, $opt_dbpassword);
|
|
46 |
my ($opt_dbhost, $opt_dbport, $opt_dbname, $opt_dbuser, $opt_dbpassword, $opt_create, $opt_type);
|
|
47 |
my ($opt_description, $opt_encoding, @opt_depends);
|
47 |
48 |
|
48 |
49 |
our (%myconfig, $form, $user, $auth, $locale, $controls, $dbupgrader);
|
49 |
50 |
|
... | ... | |
231 |
232 |
"\n\n";
|
232 |
233 |
}
|
233 |
234 |
|
|
235 |
sub create_upgrade {
|
|
236 |
my (%params) = @_;
|
|
237 |
|
|
238 |
my $filename = $params{filename};
|
|
239 |
my $dbupgrader = $params{dbupgrader};
|
|
240 |
my $type = $params{type} || '';
|
|
241 |
my $description = $params{description} || '';
|
|
242 |
my $encoding = $params{encoding} || 'utf-8';
|
|
243 |
my @depends = @{ $params{depends} };
|
|
244 |
|
|
245 |
if (!@depends) {
|
|
246 |
my @releases = grep { /^release_/ } keys %$controls;
|
|
247 |
@depends = ((sort @releases)[-1]);
|
|
248 |
}
|
|
249 |
|
|
250 |
my $comment;
|
|
251 |
if ($type eq 'sql') {
|
|
252 |
$comment = '--';
|
|
253 |
} elsif ($type eq 'pl') {
|
|
254 |
$comment = '#';
|
|
255 |
} elsif (!$type) {
|
|
256 |
die 'Error: No --type was given but is required for --create.';
|
|
257 |
} else {
|
|
258 |
die 'Error: Unknown --type. Try "sql" or "pl".';
|
|
259 |
}
|
|
260 |
|
|
261 |
my $full_filename = $dbupgrader->path . '/' . $filename . '.' . $type;
|
|
262 |
|
|
263 |
die "file '$full_filename' already exists, aborting" if -f $full_filename;
|
|
264 |
|
|
265 |
|
|
266 |
open my $fh, ">:utf8", $full_filename or die "can't open $full_filename";
|
|
267 |
print $fh "$comment \@tag: $filename\n";
|
|
268 |
print $fh "$comment \@description: $description\n";
|
|
269 |
print $fh "$comment \@depends: @depends\n";
|
|
270 |
print $fh "$comment \@encoding: $encoding\n";
|
|
271 |
close $fh;
|
|
272 |
|
|
273 |
system("\$EDITOR $full_filename");
|
|
274 |
exit 0;
|
|
275 |
}
|
|
276 |
|
234 |
277 |
sub apply_upgrade {
|
235 |
278 |
my $name = shift;
|
236 |
279 |
|
... | ... | |
399 |
442 |
"user=s" => \$opt_user,
|
400 |
443 |
"apply=s" => \$opt_apply,
|
401 |
444 |
"applied" => \$opt_applied,
|
|
445 |
"create=s" => \$opt_create,
|
|
446 |
"type=s" => \$opt_type,
|
|
447 |
"encoding=s" => \$opt_encoding,
|
|
448 |
"description=s" => \$opt_description,
|
|
449 |
"depends=s" => \@opt_depends,
|
402 |
450 |
"unapplied" => \$opt_unapplied,
|
403 |
451 |
"test-utf8" => \$opt_test_utf8,
|
404 |
452 |
"dbhost:s" => \$opt_dbhost,
|
... | ... | |
420 |
468 |
dump_graphviz('file_name' => $opt_graphviz,
|
421 |
469 |
'format' => $opt_format) if (defined $opt_graphviz);
|
422 |
470 |
dump_nodeps() if ($opt_nodeps);
|
|
471 |
create_upgrade(filename => $opt_create,
|
|
472 |
dbupgrader => $dbupgrader,
|
|
473 |
type => $opt_type,
|
|
474 |
description => $opt_description,
|
|
475 |
encoding => $opt_encoding,
|
|
476 |
depends => \@opt_depends) if ($opt_create);
|
423 |
477 |
|
424 |
478 |
if ($opt_user) {
|
425 |
479 |
$auth = SL::Auth->new();
|
... | ... | |
456 |
510 |
dump_unapplied();
|
457 |
511 |
}
|
458 |
512 |
|
|
513 |
|
459 |
514 |
if ($opt_test_utf8) {
|
460 |
515 |
$form->error("--test-utf8 used but no database name given with --dbname.") if (!$opt_dbname);
|
461 |
516 |
|
dbupgrade script kann jetzt auch upgrade scripte erzeugen.
scripts/dbupgrade2_tool.pl --create=<tag> --type=<sql|pl>
speichert die Datei unter dem richtigen Namen, und öffnet sie in $EDITOR