6 our $VERSION = '0.001004'; # 0.1.4
8 our ($loop, $did_upgrade);
10 sub loop { $loop ||= Tak::Loop->new }
13 return if $did_upgrade;
14 require IO::Async::Loop;
15 my $new_loop = IO::Async::Loop->new;
16 $loop->pass_watches_to($new_loop) if $loop;
22 my ($class, $done) = @_;
24 $class->loop->loop_once until $_[1];
28 my ($class, @requests) = @_;
29 @requests = grep !$_->is_done, @requests;
30 return unless @requests;
31 my %req = map +("$_" => "$_"), @requests;
34 my $orig = $_->{on_result};
36 ($_ => sub { delete $req{$tag}; $orig->(@_); $done = 1 unless keys %req; })
38 my $call = sub { $class->loop_until($done) };
42 $call = sub { local $req->{on_result} = $on_r{$req}; $inner->() };
52 Tak - Multi host remote control over ssh (then I wrote Object::Remote)
56 # Curse at mst for doing it again under a different name
57 # Curse at mst some more
58 $ cpanm Object::Remote
61 (sorry, I should've done a tombstone release ages back)
63 bin/tak -h user1@host1 -h user2@host2 exec cat /etc/hostname
69 package Tak::MyScript;
72 use Tak::ObjectClient;
74 sub each_get_homedir {
75 my ($self, $remote) = @_;
76 my $oc = Tak::ObjectClient->new(remote => $remote);
77 my $home = $oc->new_object('Path::Class::Dir')->absolute->stringify;
79 $remote->host.': '.$home."\n"
87 tak -h something get-homedir
89 =head1 WHERE'S THE REST?
91 A drink leaked in my bag on the way back from LPW. My laptop is finally
92 alive again though so I'll try and turn my slides into a vague attempt
93 at documentation while I'm traveling to/from christmas things.
98 package Tak::MyScript;
104 use Tak::ObjectClient;
108 my ($self, $remote) = @_;
110 my $oc = Tak::ObjectClient->new(remote => $remote);
111 my $name = $oc->new_object('My::Hostname');
112 print "Connected to hostname: " . $name . "\n";
119 $cat ./lib/My/Hostname
120 package My::Hostname;
134 mst - Matt S. Trout (cpan:MSTROUT) <mst@shadowcat.co.uk>
138 None required yet. Maybe this module is perfect (hahahahaha ...).
142 Copyright (c) 2011 the Tak L</AUTHOR> and L</CONTRIBUTORS>
147 This library is free software and may be distributed under the same terms