+sub create_upgrade {
+ my (%params) = @_;
+
+ my $filename = $params{filename};
+ my $dbupgrader = $params{dbupgrader};
+ my $type = $params{type} || 'sql';
+ my $description = $params{description} || '';
+ my @depends = @{ $params{depends} };
+
+ my $encoding = 'utf-8';
+
+ if (!@depends) {
+ my @releases = grep { /^release_/ } keys %$controls;
+ @depends = ((sort @releases)[-1]);
+ }
+
+ my $comment;
+ if ($type eq 'sql') {
+ $comment = '--';
+ } elsif ($type eq 'pl') {
+ $comment = '#';
+ } elsif (!$type) {
+ die 'Error: No --type was given but is required for --create.';
+ } else {
+ die 'Error: Unknown --type. Try "sql" or "pl".';
+ }
+
+ my $full_filename = $dbupgrader->path . '/' . $filename . '.' . $type;
+
+ die "file '$full_filename' already exists, aborting" if -f $full_filename;
+
+
+ open my $fh, ">:encoding($encoding)", $full_filename or die "can't open $full_filename";
+ print $fh "$comment \@tag: $filename\n";
+ print $fh "$comment \@description: $description\n";
+ print $fh "$comment \@depends: @depends\n";
+
+ if ($type eq 'pl') {
+ print $fh "package SL::DBUpgrade2::$filename;\n";
+ print $fh "\n";
+ print $fh "use strict;\n";
+ print $fh "use utf8;\n" if $encoding =~ /utf.?8/i;
+ print $fh "\n";
+ print $fh "use parent qw(SL::DBUpgrade2::Base);\n";
+ print $fh "\n";
+ print $fh "sub run {\n";
+ print $fh " my (\$self) = \@_;\n";
+ print $fh "\n";
+ print $fh "}\n";
+ print $fh "\n";
+ print $fh "1;\n";
+ }
+
+ close $fh;
+
+ print "File $full_filename created.\n";
+
+ system("\$EDITOR $full_filename");
+ exit 0;
+}
+