App-Glacier

 view release on metacpan or  search on metacpan

lib/App/Glacier/Command/Jobs.pm  view on Meta::CPAN


Displays cached results without querying Glacier.

=item B<-l>, B<--long>

List jobs in long format.  Long format includes Glaciar job identifier.

=item B<--time-style=>I<STYLE>

List timestamps in style STYLE.  The STYLE should be one of the
following:

=over 8

=item B<+I<FORMAT>>

List timestamps using I<FORMAT>, which is interpreted as the I<format>
argument to B<strftime>(3) function.
    
=item B<default>

Default format.  For timestamps not older than 6 month: month, day, hour
and minute, e.g.: "May 23 15:00".  For older timestamps: month, day, and
year, e.g.: "May 23  2017".
    
=item B<full-iso>

List timestamps in full using ISO 8601 date, time, and time zone format with
nanosecond precision, e.g., "2017-05-23 15:53:10.633308971 +0000".  This style
is equivalent to "B<+%Y-%m-%d %H:%M:%S.%N %z>".

=item B<long-iso>

List ISO 8601 date and time in minutes, e.g., "2017-05-23 15:53".  Equivalent
to "B<+%Y-%m-%d %H:%M>".    
    
=item B<iso>

B<GNU ls>-compatible "iso": ISO 8601 dates for non-recent timestamps (e.g.,
"2017-05-23"), and ISO 8601 month, day, hour, and minute for recent
timestamps (e.g., "03-30 23:45").  Timestamp is considered "recent", if it
is not older than 6 months ago.    

=item B<locale>

List timestamps in a locale-dependent form.  This is equivalent to B<+%c>.

=back

=back

=head1 SEE ALSO

B<glacier>(1),    
B<strftime>(3).
    
=cut    

sub new {
    my ($class, $argref, %opts) = @_;
    $class->SUPER::new(
	$argref,
        optmap => {
	    'time-style=s' => sub { $_[0]->set_time_style_option($_[2]) },
	    'long|l+' => 'long',
	    'cached|c' => 'cached',
	},
	%opts);
}

sub run {
     my $self = shift;
     $self->list($self->command_line);
}

sub list {
    my ($self, @vault_names) = @_;

    my $db = $self->jobdb();
    $db->foreach(sub {
	my ($key, $descr, $vault) = @_;

	return if (@vault_names && ! grep { $_ eq $vault } @vault_names);

	unless ($self->{_options}{cached}) {
	    my $res = $self->check_job($key, $descr, $vault)
		or return;
	    $res = timestamp_deserialize($res);
	    $self->debug(2, $res->{StatusCode});
	    $db->store($key, $res) unless $self->dry_run;
	    $descr = $res;
	}
	
	my $started = $self->format_date_time($descr, 'CreationDate');
	    
	print "$started - ";
	if ($descr->{Completed} && $descr->{StatusCode} eq 'Succeeded') {
	    print $self->format_date_time($descr, 'CompletionDate');
	} else {
	    my $len = length($started);
	    printf("%$len.${len}s", $descr->{StatusCode});
	}
	printf(" %-10.10s ", $vault);	
	print $descr->{JobDescription} || $descr->{Action};
	if ($self->{_options}{long}) {
	    print ' ', $descr->{JobId};
	}
	print "\n";
		 });
}

1;



( run in 3.862 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )