OSDN Git Service

merge command config values after validating positional parameters
authorscribu <mail@scribu.net>
Sat, 23 Nov 2013 11:43:57 +0000 (13:43 +0200)
committerscribu <mail@scribu.net>
Sat, 23 Nov 2013 11:43:57 +0000 (13:43 +0200)
php/WP_CLI/Dispatcher/CompositeCommand.php
php/WP_CLI/Dispatcher/Subcommand.php
php/WP_CLI/Runner.php

index f57d1f9..e5af824 100644 (file)
@@ -59,7 +59,7 @@ class CompositeCommand {
                return '<command>';
        }
 
-       function invoke( $args, $assoc_args ) {
+       function invoke( $args, $assoc_args, $extra_args ) {
                $this->show_usage();
        }
 
index 78cda45..465b0d8 100644 (file)
@@ -197,8 +197,7 @@ class Subcommand extends CompositeCommand {
                }
        }
 
-       function invoke( $args, $assoc_args ) {
-
+       function invoke( $args, $assoc_args, $extra_args ) {
                if ( \WP_CLI::get_config( 'prompt' ) )
                        list( $args, $assoc_args ) = $this->prompt_args( $args, $assoc_args );
 
@@ -206,7 +205,7 @@ class Subcommand extends CompositeCommand {
 
                \WP_CLI::do_action( 'before_invoke:' . $this->get_parent()->get_name() );
 
-               call_user_func( $this->when_invoked, $args, $assoc_args );
+               call_user_func( $this->when_invoked, $args, array_merge( $extra_args, $assoc_args ) );
        }
 }
 
index 2dac7b3..65c376a 100644 (file)
@@ -197,11 +197,13 @@ class Runner {
                $name = implode( ' ', $cmd_path );
 
                if ( isset( $this->extra_config[ $name ] ) ) {
-                       $assoc_args = array_merge( $this->extra_config[ $name ], $assoc_args );
+                       $extra_args = $this->extra_config[ $name ];
+               } else {
+                       $extra_args = array();
                }
 
                try {
-                       $command->invoke( $final_args, $assoc_args );
+                       $command->invoke( $final_args, $assoc_args, $extra_args );
                } catch ( WP_CLI\Iterators\Exception $e ) {
                        WP_CLI::error( $e->getMessage() );
                }