App-Sqitch
view release on metacpan or search on metacpan
lib/App/Sqitch/Command/log.pm view on Meta::CPAN
has reverse => (
is => 'ro',
isa => Bool,
default => 0,
);
has headers => (
is => 'ro',
isa => Bool,
default => 1,
);
has format => (
is => 'ro',
isa => Str,
default => $FORMATS{medium},
);
has formatter => (
is => 'ro',
isa => class_type('App::Sqitch::ItemFormatter'),
lazy => 1,
default => sub { App::Sqitch::ItemFormatter->new },
);
sub options {
return qw(
event=s@
target|t=s
change-pattern|change=s
project-pattern|project=s
committer-pattern|committer=s
format|f=s
date-format|date=s
max-count|n=i
skip=i
reverse!
color=s
no-color
abbrev=i
oneline
headers!
);
}
sub configure {
my ( $class, $config, $opt ) = @_;
# Set base values if --oneline.
if ($opt->{oneline}) {
$opt->{format} ||= 'oneline';
$opt->{abbrev} //= 6;
}
# Determine and validate the date format.
my $date_format = delete $opt->{date_format} || $config->get(
key => 'log.date_format'
);
if ($date_format) {
require App::Sqitch::DateTime;
App::Sqitch::DateTime->validate_as_string_format($date_format);
} else {
$date_format = 'iso';
}
# Make sure the log format is valid.
if (my $format = $opt->{format}
|| $config->get(key => 'log.format')
) {
if ($format =~ s/^format://) {
$opt->{format} = $format;
} else {
$opt->{format} = $FORMATS{$format} or hurl log => __x(
'Unknown log format "{format}"',
format => $format
);
}
}
# Determine how to handle ANSI colors.
my $color = delete $opt->{no_color} ? 'never'
: delete $opt->{color} || $config->get(key => 'log.color');
$opt->{formatter} = App::Sqitch::ItemFormatter->new(
( $date_format ? ( date_format => $date_format ) : () ),
( $color ? ( color => $color ) : () ),
( $opt->{abbrev} ? ( abbrev => delete $opt->{abbrev} ) : () ),
);
return $class->SUPER::configure( $config, $opt );
}
sub execute {
my $self = shift;
my ($targets) = $self->parse_args(
target => $self->target,
args => \@_,
);
# Warn on multiple targets.
my $target = shift @{ $targets };
$self->warn(__x(
'Too many targets specified; connecting to {target}',
target => $target->name,
)) if @{ $targets };
my $engine = $target->engine;
# Exit with status 1 on uninitialized database, probably not expected.
hurl {
ident => 'log',
exitval => 1,
message => __x(
'Database {db} has not been initialized for Sqitch',
db => $engine->registry_destination,
),
} unless $engine->initialized;
# Exit with status 1 on no events, probably not expected.
my $iter = $engine->search_events(limit => 1);
hurl {
ident => 'log',
( run in 1.392 second using v1.01-cache-2.11-cpan-99c4e6809bf )