X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FTak.pm;h=7258b73829809aba832a6e1ca68154a9ee2dc13e;hb=4a66f5286d8acbc7cf2b8aafcc9cebd474a30614;hp=dfa19300a986dc6def3fc7e47538907a84e97741;hpb=b1aab0cf42d520d69d4bd8cc8f7cc86d7d21f6d9;p=scpubgit%2FTak.git diff --git a/lib/Tak.pm b/lib/Tak.pm index dfa1930..7258b73 100644 --- a/lib/Tak.pm +++ b/lib/Tak.pm @@ -3,15 +3,25 @@ package Tak; use Tak::Loop; use strictures 1; -our $loop; +our $VERSION = '0.001003'; # 0.1.3 + +our ($loop, $did_upgrade); sub loop { $loop ||= Tak::Loop->new } +sub loop_upgrade { + return if $did_upgrade; + require IO::Async::Loop; + my $new_loop = IO::Async::Loop->new; + $loop->pass_watches_to($new_loop) if $loop; + $loop = $new_loop; + $did_upgrade = 1; +} + sub loop_until { my ($class, $done) = @_; return if $done; - my $loop = $class->loop; - $loop->loop_once until $_[1]; + $class->loop->loop_once until $_[1]; } sub await_all { @@ -36,3 +46,98 @@ sub await_all { } 1; + +=head1 NAME + +Tak - Multi host remote control over ssh + +=head1 SYNOPSIS + + bin/tak -h user1@host1 -h user2@host2 exec cat /etc/hostname + +or + + in Takfile: + + package Tak::MyScript; + + use Tak::Takfile; + use Tak::ObjectClient; + + sub each_get_homedir { + my ($self, $remote) = @_; + my $oc = Tak::ObjectClient->new(remote => $remote); + my $home = $oc->new_object('Path::Class::Dir')->absolute->stringify; + $self->stdout->print( + $remote->host.': '.$home."\n" + ); + } + + 1; + +then + + tak -h something get-homedir + +=head1 WHERE'S THE REST? + +A drink leaked in my bag on the way back from LPW. My laptop is finally +alive again though so I'll try and turn my slides into a vague attempt +at documentation while I'm traveling to/from christmas things. + +=head1 Example + +$ cat Takfile +package Tak::MyScript; + +use strict; +use warnings; + +use Tak::Takfile; +use Tak::ObjectClient; +use lib "./lib"; + +sub each_host { + my ($self, $remote) = @_; + + my $oc = Tak::ObjectClient->new(remote => $remote); + my $name = $oc->new_object('My::Hostname'); + print "Connected to hostname: " . $name . "\n"; + } + +1; + +----- + +$cat ./lib/My/Hostname +package My::Hostname; + +use Sys::Hostname; + +sub new { + my ($self) = @_; + my $name = hostname; + return $name; + } + +1; + +=head1 AUTHOR + +mst - Matt S. Trout (cpan:MSTROUT) + +=head1 CONTRIBUTORS + +None required yet. Maybe this module is perfect (hahahahaha ...). + +=head1 COPYRIGHT + +Copyright (c) 2011 the Tak L and L +as listed above. + +=head1 LICENSE + +This library is free software and may be distributed under the same terms +as perl itself. + +=cut