Merge pull request #13131 from woocommerce/cli-attrib
Restructure ID route code for the CLI & fix attribute term.
This commit is contained in:
commit
feeb98e801
|
@ -49,6 +49,11 @@ class WC_CLI_REST_Command {
|
||||||
*/
|
*/
|
||||||
private $output_nesting_level = 0;
|
private $output_nesting_level = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List of supported IDs and their description (name => desc).
|
||||||
|
*/
|
||||||
|
private $supported_ids = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets up REST Command.
|
* Sets up REST Command.
|
||||||
*
|
*
|
||||||
|
@ -73,6 +78,24 @@ class WC_CLI_REST_Command {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Passes supported ID arguments (things like product_id, order_id, etc) that we should look for in addition to id.
|
||||||
|
*
|
||||||
|
* @param array $supported_ids
|
||||||
|
*/
|
||||||
|
public function set_supported_ids( $supported_ids = array() ) {
|
||||||
|
$this->supported_ids = $supported_ids;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Peturns an ID of supported ID arguments (things like product_id, order_id, etc) that we should look for in addition to id.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function get_supported_ids() {
|
||||||
|
return $this->supported_ids;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new item.
|
* Create a new item.
|
||||||
*
|
*
|
||||||
|
@ -312,19 +335,13 @@ EOT;
|
||||||
private function get_filled_route( $args = array() ) {
|
private function get_filled_route( $args = array() ) {
|
||||||
$parent_id_matched = false;
|
$parent_id_matched = false;
|
||||||
$route = $this->route;
|
$route = $this->route;
|
||||||
if ( strpos( $route, '<customer_id>' ) !== false && ! empty( $args ) ) {
|
|
||||||
$route = str_replace( '(?P<customer_id>[\d]+)', $args[0], $route );
|
foreach ( $this->get_supported_ids() as $id_name => $id_desc ) {
|
||||||
$parent_id_matched = true;
|
if ( strpos( $route, '<' . $id_name . '>' ) !== false && ! empty( $args ) ) {
|
||||||
} elseif ( strpos( $this->route, '<product_id>' ) !== false && ! empty( $args ) ) {
|
$route = str_replace( '(?P<' . $id_name . '>[\d]+)', $args[0], $route );
|
||||||
$route = str_replace( '(?P<product_id>[\d]+)', $args[0], $route );
|
|
||||||
$parent_id_matched = true;
|
|
||||||
} elseif ( strpos( $this->route, '<order_id>' ) !== false && ! empty( $args ) ) {
|
|
||||||
$route = str_replace( '(?P<order_id>[\d]+)', $args[0], $route );
|
|
||||||
$parent_id_matched = true;
|
|
||||||
} elseif ( strpos( $this->route, '<refund_id>' ) !== false && ! empty( $args ) ) {
|
|
||||||
$route = str_replace( '(?P<refund_id>[\d]+)', $args[0], $route );
|
|
||||||
$parent_id_matched = true;
|
$parent_id_matched = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$route = str_replace( array( '(?P<id>[\d]+)', '(?P<id>[\w-]+)' ), ( $parent_id_matched && ! empty( $args[1] ) ? $args[1] : $args[0] ), $route );
|
$route = str_replace( array( '(?P<id>[\d]+)', '(?P<id>[\w-]+)' ), ( $parent_id_matched && ! empty( $args[1] ) ? $args[1] : $args[0] ), $route );
|
||||||
return rtrim( $route );
|
return rtrim( $route );
|
||||||
|
|
|
@ -82,6 +82,17 @@ class WC_CLI_Runner {
|
||||||
* @param array $command_args
|
* @param array $command_args
|
||||||
*/
|
*/
|
||||||
private static function register_route_commands( $rest_command, $route, $route_data, $command_args = array() ) {
|
private static function register_route_commands( $rest_command, $route, $route_data, $command_args = array() ) {
|
||||||
|
// Define IDs that we are looking for in the routes (in addition to id)
|
||||||
|
// so that we can pass it to the rest command, and use it here to generate documentation.
|
||||||
|
$supported_ids = array(
|
||||||
|
'product_id' => __( 'Product ID.', 'woocommerce' ),
|
||||||
|
'customer_id' => __( 'Customer ID.', 'woocommerce' ),
|
||||||
|
'order_id' => __( 'Order ID.', 'woocommerce' ),
|
||||||
|
'refund_id' => __( 'Refund ID.', 'woocommerce' ),
|
||||||
|
'attribute_id' => __( 'Attribute ID.', 'woocommerce' ),
|
||||||
|
);
|
||||||
|
$rest_command->set_supported_ids( $supported_ids );
|
||||||
|
|
||||||
$parent = "wc {$route_data['schema']['title']}";
|
$parent = "wc {$route_data['schema']['title']}";
|
||||||
$supported_commands = array();
|
$supported_commands = array();
|
||||||
|
|
||||||
|
@ -123,36 +134,14 @@ class WC_CLI_Runner {
|
||||||
$synopsis = array();
|
$synopsis = array();
|
||||||
$arg_regs = array();
|
$arg_regs = array();
|
||||||
|
|
||||||
if ( strpos( $route, '<product_id>' ) !== false ) {
|
foreach ( $supported_ids as $id_name => $id_desc ) {
|
||||||
|
if ( strpos( $route, '<' . $id_name . '>' ) !== false ) {
|
||||||
$synopsis[] = array(
|
$synopsis[] = array(
|
||||||
'name' => 'product_id',
|
'name' => $id_name,
|
||||||
'type' => 'positional',
|
'type' => 'positional',
|
||||||
'description' => __( 'Product ID.', 'woocommerce' ),
|
'description' => $id_desc,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( strpos( $route, '<customer_id>' ) !== false ) {
|
|
||||||
$synopsis[] = array(
|
|
||||||
'name' => 'customer_id',
|
|
||||||
'type' => 'positional',
|
|
||||||
'description' => __( 'Customer ID.', 'woocommerce' ),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( strpos( $route, '<order_id>' ) !== false ) {
|
|
||||||
$synopsis[] = array(
|
|
||||||
'name' => 'order_id',
|
|
||||||
'type' => 'positional',
|
|
||||||
'description' => __( 'Order ID.', 'woocommerce' ),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( strpos( $route, '<refund_id>' ) !== false ) {
|
|
||||||
$synopsis[] = array(
|
|
||||||
'name' => 'refund_id',
|
|
||||||
'type' => 'positional',
|
|
||||||
'description' => __( 'Refund ID.', 'woocommerce' ),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( in_array( $command, array( 'delete', 'get', 'update' ) ) ) {
|
if ( in_array( $command, array( 'delete', 'get', 'update' ) ) ) {
|
||||||
|
|
Loading…
Reference in New Issue