DBIx-Deployer
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/DBIx/Deployer.pm view on Meta::CPAN
use 5.14.2;
use Modern::Perl;
use Moops;
class DBIx::Deployer::Patch 1.2.3 {
use Digest::MD5;
use Term::ANSIColor qw(colored);
use Data::Printer colored => 1;
has deployed => ( is => 'rw', isa => Bool, default => 0 );
has verified => ( is => 'rw', isa => Bool, default => 0 );
has name => ( is => 'ro', isa => Str, required => true );
has supports_transactions => ( is => 'ro', isa => Bool, default => true );
has dependencies => ( is => 'ro', isa => Maybe[ArrayRef] );
has deploy_sql => ( is => 'ro', isa => Maybe[Str] );
has deploy_sql_args => ( is => 'rw', isa => Maybe[ArrayRef] );
has deploy_script => ( is => 'ro', isa => Maybe[Str] );
has deploy_script_args => ( is => 'rw', isa => Maybe[ArrayRef] );
has no_verify => ( is => 'ro', isa => Bool, default => false );
has verify_sql => ( is => 'ro', isa => Str );
has verify_sql_args => ( is => 'rw', isa => ArrayRef );
has verify_expects => ( is => 'ro', isa => ArrayRef );
has db => ( is => 'ro', isa => InstanceOf['DBI::db'], required => true );
method deploy {
if($self->deploy_sql && $self->deploy_script) {
$self->handle_error('Patch cannot have both deploy_sql and deploy_script.');
}
elsif($self->deploy_sql) {
if($self->deploy_sql_args){
$self->db->do($self->deploy_sql, {}, @{ $self->deploy_sql_args })
or $self->handle_error($self->db->errstr);
}
else{
$self->db->do($self->deploy_sql) or $self->handle_error($self->db->errstr);
}
}
elsif($self->deploy_script) {
if( my $status = system $self->deploy_script, @{ $self->deploy_script_args || [] } ) {
$self->handle_error("Exited with status $status.");
}
}
else {
$self->handle_error('Patch has neither deploy_sql nor deploy_script.');
}
}
before deploy {
die colored(['red'], 'Patch "' . $self->name . '" is already deployed') if $self->deployed;
if($self->supports_transactions && !$self->deploy_script){ $self->db->begin_work; }
}
after deploy {
$self->deployed(1);
$self->verify;
}
method verify {
if($self->no_verify){
$self->verified(1);
return;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 5.634 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-48ebf85a1963 )