increase default timeout to 10 seconds
[scpubgit/Object-Remote.git] / lib / Object / Remote / ModuleSender.pm
CommitLineData
542d5b5c 1package Object::Remote::ModuleSender;
2
3use Config;
4use File::Spec;
5use List::Util qw(first);
6use Moo;
7
8has dir_list => (is => 'lazy');
9
10sub _build_dir_list {
11 my %core = map +($_ => 1), @Config{qw(privlibexp archlibexp)};
12 [ grep !/$Config{archname}$/, grep !$core{$_}, @INC ];
13}
14
15sub source_for {
16 my ($self, $module) = @_;
7462160e 17 if (my $find = Object::Remote::FromData->can('find_module')) {
18 if (my $source = $find->($module)) {
19 return $source;
20 }
21 }
542d5b5c 22 my ($found) = first { -f $_ }
23 map File::Spec->catfile($_, $module),
24 @{$self->dir_list};
25 die "Couldn't find ${module} in remote \@INC. dir_list contains:\n"
26 .join("\n", @{$self->dir_list})
27 unless $found;
28 open my $fh, '<', $found or die "Couldn't open ${found} for ${module}: $!";
29 return do { local $/; <$fh> };
30}
31
321;