Commit | Line | Data |
6a7c71ff |
1 | package DX::Lib::FS::Role::RunOn; |
2 | |
3 | use DX::Lib::FS::Guts; |
4 | use Moo::Role; |
5 | |
6 | my $local = DX::Lib::FS::Guts->new; |
7 | my %conn_cache; # HEINOUS |
8 | |
9 | sub _call_guts { |
10 | my ($self, $type, @args) = @_; |
11 | my ($on, $path) = $self->path =~ /^(?:([^\/]+):)?(.*)$/; |
12 | my $guts = $on ? $self->_conn_to($on) : $local; |
13 | $guts->$type($path, @args); |
14 | } |
15 | |
16 | sub _conn_to { |
17 | my ($self, $on) = @_; |
18 | $conn_cache{$on} ||= do { |
19 | require Object::Remote; |
20 | DX::Lib::FS::Guts->new::on($on); |
21 | }; |
22 | } |
23 | |
24 | 1; |