#!/usr/bin/env perl
-use Tak::WorldHandle;
+use Tak::Client;
+use Tak::Router;
use Tak::REPL;
use strictures 1;
-my $world = do {
- if (my $ssh_target = $ARGV[0]) {
- Tak::WorldHandle->new_remote($ssh_target);
- } else {
- Tak::WorldHandle->new_local;
- }
-};
+my $iclient = Tak::Client->new(service => Tak::Router->new);
-Tak::REPL->new(world => $world)->run;
+my $rclient;
+
+if (my $on = $ARGV[0]) {
+ $iclient->curry('meta')->do(register => connector => 'Tak::ConnectorService');
+ my @path = $iclient->curry('connector')->do(create => $ARGV[0]);
+ $rclient = $iclient->curry('connector', 'connection', @path, 'remote');
+ my $lclient = $iclient->curry('connector', 'connection', @path, 'local');
+ $lclient->curry('meta')->do(register => module_sender => 'Tak::ModuleSender');
+ $rclient->curry('meta')->do(
+ register => module_loader => 'Tak::ModuleLoader',
+ expose => { module_sender => [ 'remote', 'module_sender' ] }
+ );
+ $rclient->curry('module_loader')->do('enable');
+} else {
+ $rclient = $iclient;
+}
+
+$rclient->curry('meta')->do(register => eval => 'Tak::EvalService');
+
+my $repl = Tak::REPL->new(client => $rclient->curry('eval'));
+
+$repl->run;