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 0.420 second using v1.01-cache-2.11-cpan-5dc5da66d9d )