X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class-DeploymentHandler.git;a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FDeploymentHandler%2FDeployMethod%2FSQL%2FTranslator.pm;fp=lib%2FDBIx%2FClass%2FDeploymentHandler%2FDeployMethod%2FSQL%2FTranslator.pm;h=f65cf70666bd7f78f3baac5adb09eb9e3d0db784;hp=1fbf933e85ab63a4ec204e316af665362c0be6d2;hb=5b7546ec071ac21b569d20af1bab5a3fce6a6563;hpb=6e9a733d577c24ac4fe4569515fbf94fecf40f5c diff --git a/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm b/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm index 1fbf933..f65cf70 100644 --- a/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm +++ b/lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm @@ -49,6 +49,11 @@ has storage => ( lazy_build => 1, ); +has progress_callback => ( + is => 'rw', + isa => 'Maybe[CodeRef]', +); + method _build_storage { my $s = $self->schema->storage; $s->_determine_driver; @@ -280,14 +285,19 @@ method _run_sql_and_perl($filenames, $sql_to_run, $versions) { $self->_run_sql_array($sql_to_run) if $self->ignore_ddl; my $sql = ($sql_to_run)?join ";\n", @$sql_to_run:''; + my $i= -1; FILENAME: for my $filename (@files) { + $i++; if ($self->ignore_ddl && $filename =~ /^[^_]*-auto.*\.sql$/) { + $self->progress_callback and $self->progress_callback->($i, scalar(@files), 'skip', $filename); next FILENAME } elsif ($filename =~ /\.sql$/) { - $sql .= $self->_run_sql($filename) + $self->progress_callback and $self->progress_callback->($i, scalar(@files), 'sql', $filename); + $sql .= $self->_run_sql($filename) } elsif ( $filename =~ /\.pl$/ ) { - $self->_run_perl($filename, $versions) + $self->progress_callback and $self->progress_callback->($i, scalar(@files), 'perl', $filename); + $self->_run_perl($filename, $versions) } else { croak "A file ($filename) got to deploy that wasn't sql or perl!"; }