Commit | Line | Data |
799b77f3 |
1 | package Tak::ModuleSender; |
2 | |
3 | use IO::All; |
7725f2e3 |
4 | use List::Util qw(first); |
5 | use Config; |
799b77f3 |
6 | use Moo; |
7 | |
2791fd73 |
8 | with 'Tak::Role::Service'; |
9 | |
7725f2e3 |
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 | |
799b77f3 |
17 | sub handle_source_for { |
18 | my ($self, $module) = @_; |
7725f2e3 |
19 | my $io = first { $_->exists } map $_->catfile($module), @{$self->dir_list}; |
20 | unless ($io) { |
2791fd73 |
21 | die [ 'failure' ]; |
799b77f3 |
22 | } |
23 | my $code = $io->all; |
2791fd73 |
24 | return $code; |
799b77f3 |
25 | } |
26 | |
27 | 1; |