every_foo for Takfile, add Tak->await_all
[scpubgit/Tak.git] / bin / tak-repl
index 2148f2d..d6abb6b 100644 (file)
@@ -2,18 +2,30 @@
 
 use Tak::Client;
 use Tak::Router;
-use Tak::MetaService;
 use Tak::REPL;
 use strictures 1;
 
-my $router = Tak::Router->new;
+my $iclient = Tak::Client->new(service => Tak::Router->new);
 
-$router->register(meta => Tak::MetaService->new(router => $router));
+my $rclient;
 
-my $client = Tak::Client->new(service => $router);
+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;
+}
 
-$client->curry('meta')->do(register => eval => 'Tak::EvalService');
+$rclient->curry('meta')->do(register => eval => 'Tak::EvalService');
 
-my $repl = Tak::REPL->new(client => $client->curry('eval'));
+my $repl = Tak::REPL->new(client => $rclient->curry('eval'));
 
 $repl->run;