silverdirk's initial progress callback topic/progress
Arthur Axel 'fREW' Schmidt [Sat, 10 Sep 2011 18:57:07 +0000 (13:57 -0500)]
Changes
lib/DBIx/Class/DeploymentHandler/DeployMethod/SQL/Translator.pm

diff --git a/Changes b/Changes
index 2e3ff02..e813c95 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
 Revision history for {{$dist->name}}
 
 {{$NEXT}}
+       - Add basic tool for showing progress
        - Stop warning all the time (ribasushi)
        - croak on a couple errors that should be fatal
        - Stop deleting the wrong version (for downgrades)
index 1fbf933..f65cf70 100644 (file)
@@ -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!";
     }