Tag plugins that can take cmdline args with Role::CmdlineArgs; add test
[gitmo/MooseX-Runnable.git] / lib / MooseX / Runnable / Invocation / Plugin / Restart.pm
index cc49382..3c98714 100644 (file)
@@ -4,7 +4,8 @@ use MooseX::Types::Moose qw(Str);
 use AnyEvent;
 use namespace::autoclean;
 
-with 'MooseX::Runnable::Invocation::Plugin::Restart::Base';
+with 'MooseX::Runnable::Invocation::Plugin::Restart::Base',
+  'MooseX::Runnable::Invocation::Plugin::Role::CmdlineArgs';
 
 has 'completion_condvar' => (
     is       => 'ro',
@@ -27,9 +28,25 @@ has 'restart_signal' => (
     default  => sub { 'HUP' },
 );
 
+sub _build_initargs_from_cmdline {
+    my ($class, @args) = @_;
+    confess 'Bad args passed to Restart plugin'
+      unless @args % 2 == 0;
+
+    my %args = @args;
+
+    my %res;
+    if(my $kill = $args{'--kill-signal'}){
+        $res{kill_signal} = $kill;
+    }
+    if(my $res = $args{'--restart-signal'}){
+        $res{restart_signal} = $res;
+    }
+    return \%res;
+}
+
 after '_restart_parent_setup' => sub {
     my $self = shift;
-
     my ($kw, $rw);
     $kw = AnyEvent->signal( signal => $self->kill_signal, cb => sub {
         $self->kill_child;