App-SimpleScan-Plugin-Retry
view release on metacpan or search on metacpan
lib/App/SimpleScan/Plugin/Retry.pm view on Meta::CPAN
package App::SimpleScan::Plugin::Retry;
our $VERSION = '1.02';
use warnings;
use strict;
use Carp;
use Scalar::Util qw(looks_like_number);
my ($retry);
sub import {
no strict 'refs';
*{caller() . '::retry'} = \&retry;
}
sub retry {
my($self, $value) = @_;
$retry = $value if defined $value;
$retry;
}
sub options {
return ('retry=s' => \$retry,
);
}
sub validate_options {
my($class, $app) = @_;
if (defined (my $count = $app->retry)) {
$app->pragma('retry')->($app, $count);
}
}
sub pragmas {
return (['retry' => \&retry_pragma],
);
}
sub retry_pragma {
my ($self, $args) = @_;
if (looks_like_number($args)) {
$args = int $args;
$self->stack_code(qq(mech->retry("$args");\n));
}
else {
$self->stack_test(qq(fail "retry count '$args' is not a number";\n));
}
}
1; # Magic true value required at end of module
__END__
=head1 NAME
App::SimpleScan::Plugin::Retry - implement retry pragma/command line option
=head1 VERSION
This document describes App::SimpleScan::Plugin::Retry version 1.00
=head1 SYNOPSIS
simple_scan --retry 6
or in a simple_scan input file:
%%retry 6
Both of these would retry fetches up to 6 times, pausing an increasingly-long
time between each try. If all attempts fail, the failure reported with the last fetch
is reflected back to the test program; if at any point the fetch
succeeds, further retry attempts are abandoned.
=head1 DESCRIPTION
( run in 2.504 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )