App-JESP

 view release on metacpan or  search on metacpan

lib/App/JESP.pm  view on Meta::CPAN

sub status{
    my ($self) = @_;
    my $plan_patches = $self->plan()->patches();
    $log->debug("Got ".scalar(@$plan_patches)." patches to inspect");

    my $applied_patches = $self->_applied_patches();

    foreach my $plan_patch ( @$plan_patches ){
        if( my $applied_patch = delete $applied_patches->{$plan_patch->id()} ){
            $plan_patch->applied_datetime( $applied_patch->{applied_datetime} );
            $log->info( $self->colorizer->colored('✔︎', "bold green")."  ".sprintf('%-52s', "'".$plan_patch->id()."'" )." Applied on ".$plan_patch->applied_datetime() );
        }else{
            $log->info( $self->colorizer->colored('âš ', "bold yellow")."  ".sprintf('%-52s', "'".$plan_patch->id()."'" )." Not applied (yet?)" );
        }
    }

    my $meta_prefix = $self->prefix().'meta';

    my $plan_orphans =  [ grep{ $_ !~ /^$meta_prefix/ }  keys %$applied_patches ];
    if( @$plan_orphans ){
        $log->warn($self->colorizer()->colored('⚠︎', "bold red")."  Got orphan patches (patches in meta table but not in plan): ".join(', ' , map{ "'$_'" } @$plan_orphans ) );
    }

    return {
        plan_patches => $plan_patches,
        plan_orphans => $plan_orphans,
    };
}

sub deploy{
    my ($self, $options) = @_;

lib/App/JESP.pm  view on Meta::CPAN

            unless( $options->{logonly} ){
                $self->driver()->apply_patch( $patch );
            }else{
                $log->info("logonly mode. Patch not really applied");
            }
            $db->commit();
        };
        if( my $err = $@ ){
            $log->error("Got error $err. ROLLING BACK");
            $db->rollback();
            die "ERROR APPLYING PATCH ".$patch->id().": $err. ".$self->colorizer()->colored("ABORTING", "bold red")."\n";
        };
        $log->info($self->colorizer()->colored("Patch '".$patch->id()."' applied successfully", "green"));
        $applied++;
    }
    $log->info($self->colorizer()->colored("DONE Deploying DB Patches", "green"));
    return $applied;
}

# Runs the code to return a DBIx::Simple::Result
# or die with the given error message (for humans)



( run in 1.176 second using v1.01-cache-2.11-cpan-c333fce770f )