use all non-arch-specific non-core dirs in @INC
[scpubgit/Tak.git] / lib / Tak / ModuleSender.pm
1 package Tak::ModuleSender;
2
3 use IO::All;
4 use List::Util qw(first);
5 use Config;
6 use Moo;
7
8 with 'Tak::Role::Service';
9
10 has dir_list => (is => 'lazy');
11
12 sub _build_dir_list {
13   my %core = map +($_ => 1), @Config{qw(privlibexp archlibexp)};
14   [ map io->dir($_), grep !/$Config{archname}$/, grep !$core{$_}, @INC ];
15 }
16
17 sub handle_source_for {
18   my ($self, $module) = @_;
19   my $io = first { $_->exists } map $_->catfile($module), @{$self->dir_list};
20   unless ($io) {
21     die [ 'failure' ];
22   }
23   my $code = $io->all;
24   return $code;
25 }
26
27 1;