repl works again
[scpubgit/Tak.git] / lib / Tak / ModuleLoader.pm
1 package Tak::ModuleLoader;
2
3 use Tak::ModuleLoader::Hook;
4 use Moo;
5
6 with 'Tak::Role::Service';
7
8 has module_sender => (is => 'ro', required => 1);
9
10 has inc_hook => (is => 'lazy');
11
12 sub _build_inc_hook {
13   my ($self) = @_;
14   Tak::ModuleLoader::Hook->new(sender => $self->module_sender);
15 }
16
17 sub handle_enable {
18   my ($self) = @_;
19   push @INC, $self->inc_hook;
20   return 'enabled';
21 }
22
23 sub handle_disable {
24   my ($self) = @_;
25   my $hook = $self->inc_hook;
26   @INC = grep $_ ne $hook, @INC;
27   return 'disabled';
28 }
29
30 sub DEMOLISH {
31   my ($self) = @_;
32   $self->handle_disable;
33 }
34
35 1;