App-Sqitch
view release on metacpan or search on metacpan
lib/App/Sqitch/Command/engine.pm view on Meta::CPAN
engine => $engine,
command => "add $engine " . ($props->{target} || "db:$engine:"),
) unless $config->get( key => "engine.$engine.target");
if (my $targ = $props->{target}) {
$props->{target} = $self->_target($engine, $targ) or hurl engine => __(
'Cannot unset an engine target'
);
}
# Make it so.
$config->group_set( $config->local_file, $self->config_params($key) );
$self->make_directories_for( $self->config_target( engine => $engine) );
}
sub rm { shift->remove(@_) }
sub remove {
my ($self, $engine) = @_;
$self->usage unless $engine;
my $config = $self->sqitch->config;
try {
$config->rename_section(
from => "engine.$engine",
filename => $config->local_file,
);
} catch {
die $_ unless /No such section/;
hurl engine => __x(
'Unknown engine "{engine}"',
engine => $engine,
);
};
try {
$config->rename_section(
from => "engine.$engine.variables",
filename => $config->local_file,
);
} catch {
die $_ unless /No such section/;
};
return $self;
}
sub show {
my ($self, @names) = @_;
return $self->list unless @names;
my $sqitch = $self->sqitch;
my $config = $sqitch->config;
# Set up labels.
my %label_for = (
target => __ 'Target',
registry => __ 'Registry',
client => __ 'Client',
top_dir => __ 'Top Directory',
plan_file => __ 'Plan File',
extension => __ 'Extension',
revert => ' ' . __ 'Revert',
deploy => ' ' . __ 'Deploy',
verify => ' ' . __ 'Verify',
reworked => ' ' . __ 'Reworked',
);
my $len = max map { length } values %label_for;
$_ .= ': ' . ' ' x ($len - length $_) for values %label_for;
# Header labels.
$label_for{script_dirs} = __('Script Directories') . ':';
$label_for{reworked_dirs} = __('Reworked Script Directories') . ':';
$label_for{variables} = __('Variables') . ':';
$label_for{no_variables} = __('No Variables');
require App::Sqitch::Target;
for my $engine (@names) {
my $target = App::Sqitch::Target->new(
$self->target_params,
name => $config->get(key => "engine.$engine.target") || "db:$engine",
);
$self->emit("* $engine");
$self->emit(' ', $label_for{target}, $target->target);
$self->emit(' ', $label_for{registry}, $target->registry);
$self->emit(' ', $label_for{client}, $target->client);
$self->emit(' ', $label_for{top_dir}, $target->top_dir);
$self->emit(' ', $label_for{plan_file}, $target->plan_file);
$self->emit(' ', $label_for{extension}, $target->extension);
$self->emit(' ', $label_for{script_dirs});
$self->emit(' ', $label_for{deploy}, $target->deploy_dir);
$self->emit(' ', $label_for{revert}, $target->revert_dir);
$self->emit(' ', $label_for{verify}, $target->verify_dir);
$self->emit(' ', $label_for{reworked_dirs});
$self->emit(' ', $label_for{reworked}, $target->reworked_dir);
$self->emit(' ', $label_for{deploy}, $target->reworked_deploy_dir);
$self->emit(' ', $label_for{revert}, $target->reworked_revert_dir);
$self->emit(' ', $label_for{verify}, $target->reworked_verify_dir);
my $vars = $target->variables;
if (%{ $vars }) {
my $len = max map { length } keys %{ $vars };
$self->emit(' ', $label_for{variables});
$self->emit(" $_: " . (' ' x ($len - length $_)) . $vars->{$_})
for sort { lc $a cmp lc $b } keys %{ $vars };
} else {
$self->emit(' ', $label_for{no_variables});
}
}
return $self;
}
1;
__END__
=head1 Name
App::Sqitch::Command::engine - Add, modify, or list Sqitch database engines
=head1 Synopsis
my $cmd = App::Sqitch::Command::engine->new(%params);
$cmd->execute;
=head1 Description
Manages Sqitch database engines, which are stored in the local configuration file.
=head1 Interface
=head3 Class Methods
=head3 C<extra_target_keys>
Returns a list of additional option keys to be specified via options.
=head2 Instance Methods
=head2 Attributes
=head3 C<properties>
Hash of property values to set.
=head3 C<execute>
$engine->execute($command);
Executes the C<engine> command.
=head3 C<add>
Implements the C<add> action.
=head3 C<alter>
Implements the C<alter> action.
( run in 0.565 second using v1.01-cache-2.11-cpan-5a3173703d6 )