Script-Remote

 view release on metacpan or  search on metacpan

lib/Script/Remote.pm  view on Meta::CPAN

# $Id: /mirror/coderepos/lang/perl/Script-Remote/trunk/lib/Script/Remote.pm 57706 2008-06-05T02:27:20.427194Z daisuke  $

package Script::Remote;
use Moose;
use Moose::Util::TypeConstraints;
use Path::Class::File;

our $DEFAULT_SSH;

class_type 'Path::Class::File';
coerce 'Path::Class::File'
    => from 'Str'
        => via { Path::Class::File->new($_) }
;

has 'hostname' => (
    is => 'rw',
    isa => 'Str',
    required => 1
);

has 'username' => (
    is => 'rw',
    isa => 'Str',
    required => 1,
    default => (getpwuid($>))[0]
);

has 'perl' => (
    is => 'rw',
    isa => 'Path::Class::File',
    coerce => 1,
    required => 1,
    default => $^X
);

has 'no_wait' => (
    is => 'rw',
    isa => 'Bool',
    default => 0
);

has 'ssh' => (
    is => 'rw',
    isa => 'Path::Class::File',
    coerce => 1,
    required => 1,
    default => sub {
        $DEFAULT_SSH ||= __find_cmd("ssh", [ split(/:/, $ENV{PATH}) ]);
    }
);

has 'script' => (
    is => 'rw',
    isa => 'Path::Class::File',
    coerce => 1,
    required => 1,
);

has 'pid' => (
    is => 'rw',
    isa => 'Int'
);

has 'child_out' => (
    is => 'rw'
);

has 'ssh_args' => (
    is => 'rw',
    isa => 'ArrayRef',
    auto_deref => 1,
    default => sub { +[] },
);

no Moose;

use Data::Dump ();
use IPC::Open2 qw(open2);
use POSIX ();

my $MYSELF = '';
open(my $fh, __FILE__);
while (<$fh>) {
    $MYSELF .= $_;
    last if /^"END OF PACKAGE";/



( run in 0.921 second using v1.01-cache-2.11-cpan-e1769b4cff6 )