Astro-SpaceTrack
view release on metacpan or search on metacpan
inc/My/Module/Recommend.pm view on Meta::CPAN
package My::Module::Recommend;
use strict;
use warnings;
use Carp;
use Config;
use My::Module::Recommend::Any qw{ __any };
my ( $is_5_010, $is_5_012 );
if ( $] ge '5.012' ) {
$is_5_012 = $is_5_010 = 1;
} elsif ( $] ge '5.010' ) {
$is_5_010 = 1;
};
my %misbehaving_os = map { $_ => 1 } qw{ MSWin32 cygwin };
my @optionals = (
__any( 'Config::Identity' => <<'EOD' ),
This module is used to parse the user's identity file, which
provides default attribute values, and which can be encrypted with
gpg2. If you do not intend to make use of the identity file,
Config::Identity is not needed.
EOD
__any( 'Browser::Open' => <<'EOD' ),
This module is being phased in as the only supported way to
display web-based help. If you intend to leave the 'webcmd'
attribute false, this module is not needed.
EOD
__any( 'Time::HiRes' => <<'EOD' ),
This module is used for more precise throttling of Space Track
requests. The code will work without it, but the less precise
timing may result in retrieval failures.
EOD
);
my %core = map { $_ => 1 } qw{ Time::HiRes };
sub optionals {
# As of Test::Builder 1.302190 (March 2 2022) Time::HiRes is needed
# by Test::Builder, which is used by Test::More. It's a core module,
# so it OUGHT to be available, though there are known downstream
# packagers who strip core modules. Sigh. This is the reason I'm
# stripping it here rather than removing it completely.
return ( grep { ! $core{$_} } map { $_->modules() } @optionals );
}
sub recommend {
my $need_some;
foreach my $mod ( @optionals ) {
defined( my $msg = $mod->recommend() )
or next;
$need_some++
or warn <<'EOD';
The following optional modules were not available:
EOD
warn "\n$msg";
}
$need_some
and warn <<'EOD';
It is not necessary to install these now. If you decide to install them
later, this software will make use of them when it finds them.
EOD
return;
}
1;
( run in 2.509 seconds using v1.01-cache-2.11-cpan-97f6503c9c8 )