enhance repl command
Matt S Trout [Fri, 11 Nov 2011 14:23:02 +0000 (14:23 +0000)]
lib/Tak/Role/ScriptActions.pm

index bde1cb7..9551b62 100644 (file)
@@ -55,10 +55,25 @@ sub print_exec_result {
   }
 }
 
-sub each_repl {
-  my ($self, $remote) = @_;
+sub each_repl (I=s@;m=s@;M=s@) {
+  my ($self, $remote, $options) = @_;
   require Tak::REPL;
+  require B;
   $remote->ensure(eval_service => 'Tak::EvalService');
+  foreach my $lib (@{$options->{'I'}||[]}) {
+    $remote->do(eval_service => eval => "lib->import(${\B::perlstring($lib)})");
+  }
+  foreach my $module (@{$options->{'m'}||[]}) {
+    $remote->do(eval_service => eval => "use ${module} ()");
+  }
+  foreach my $spec (@{$options->{'M'}||[]}) {
+    my ($module, $import) = split('=', $spec);
+    my $extra = '';
+    if ($import) {
+      $extra = ' '.join(', ', map B::perlstring($_), split(',',$import));
+    }
+    $remote->do(eval_service => eval => "use ${module}${extra}");
+  }
   Tak::REPL->new(client => $remote->curry('eval_service'))->run;
 }