env dir code
[scpubgit/DKit.git] / lib / DX / Lib / FS / Role / RunOn.pm
CommitLineData
6a7c71ff 1package DX::Lib::FS::Role::RunOn;
2
3use DX::Lib::FS::Guts;
4use Moo::Role;
5
6my $local = DX::Lib::FS::Guts->new;
7my %conn_cache; # HEINOUS
8
9sub _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
16sub _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
241;