WP_CLI

Runner::back_compat_conversions()private staticWP-CLI 1.0

Transparently convert deprecated syntaxes

Method of the class: Runner{}

No Hooks.

Return

Array.

Usage

$result = Runner::back_compat_conversions( $args, $assoc_args );
$args(array) (required)
-
$assoc_args(array) (required)
-

Runner::back_compat_conversions() code WP-CLI 2.8.0-alpha

private static function back_compat_conversions( $args, $assoc_args ) {
	$top_level_aliases = [
		'sql'  => 'db',
		'blog' => 'site',
	];
	if ( count( $args ) > 0 ) {
		foreach ( $top_level_aliases as $old => $new ) {
			if ( $old === $args[0] ) {
				$args[0] = $new;
				break;
			}
		}
	}

	// *-meta  ->  * meta
	if ( ! empty( $args ) && preg_match( '/(post|comment|user|network)-meta/', $args[0], $matches ) ) {
		array_shift( $args );
		array_unshift( $args, 'meta' );
		array_unshift( $args, $matches[1] );
	}

	// cli aliases  ->  cli alias list
	if ( [ 'cli', 'aliases' ] === array_slice( $args, 0, 2 ) ) {
		list( $args[0], $args[1], $args[2] ) = [ 'cli', 'alias', 'list' ];
	}

	// core (multsite-)install --admin_name=  ->  --admin_user=
	if ( count( $args ) > 0 && 'core' === $args[0] && isset( $assoc_args['admin_name'] ) ) {
		$assoc_args['admin_user'] = $assoc_args['admin_name'];
		unset( $assoc_args['admin_name'] );
	}

	// core config  ->  config create
	if ( [ 'core', 'config' ] === array_slice( $args, 0, 2 ) ) {
		list( $args[0], $args[1] ) = [ 'config', 'create' ];
	}
	// core language  ->  language core
	if ( [ 'core', 'language' ] === array_slice( $args, 0, 2 ) ) {
		list( $args[0], $args[1] ) = [ 'language', 'core' ];
	}

	// checksum core  ->  core verify-checksums
	if ( [ 'checksum', 'core' ] === array_slice( $args, 0, 2 ) ) {
		list( $args[0], $args[1] ) = [ 'core', 'verify-checksums' ];
	}

	// checksum plugin  ->  plugin verify-checksums
	if ( [ 'checksum', 'plugin' ] === array_slice( $args, 0, 2 ) ) {
		list( $args[0], $args[1] ) = [ 'plugin', 'verify-checksums' ];
	}

	// site create --site_id=  ->  site create --network_id=
	if ( count( $args ) >= 2 && 'site' === $args[0] && 'create' === $args[1] && isset( $assoc_args['site_id'] ) ) {
		$assoc_args['network_id'] = $assoc_args['site_id'];
		unset( $assoc_args['site_id'] );
	}

	// {plugin|theme} update-all  ->  {plugin|theme} update --all
	if ( count( $args ) > 1 && in_array( $args[0], [ 'plugin', 'theme' ], true )
		&& 'update-all' === $args[1]
	) {
		$args[1]           = 'update';
		$assoc_args['all'] = true;
	}

	// transient delete-expired  ->  transient delete --expired
	if ( count( $args ) > 1 && 'transient' === $args[0] && 'delete-expired' === $args[1] ) {
		$args[1]               = 'delete';
		$assoc_args['expired'] = true;
	}

	// transient delete-all  ->  transient delete --all
	if ( count( $args ) > 1 && 'transient' === $args[0] && 'delete-all' === $args[1] ) {
		$args[1]           = 'delete';
		$assoc_args['all'] = true;
	}

	// plugin scaffold  ->  scaffold plugin
	if ( [ 'plugin', 'scaffold' ] === array_slice( $args, 0, 2 ) ) {
		list( $args[0], $args[1] ) = [ $args[1], $args[0] ];
	}

	// foo --help  ->  help foo
	if ( isset( $assoc_args['help'] ) ) {
		array_unshift( $args, 'help' );
		unset( $assoc_args['help'] );
	}

	// {post|user} list --ids  ->  {post|user} list --format=ids
	if ( count( $args ) > 1 && in_array( $args[0], [ 'post', 'user' ], true )
		&& 'list' === $args[1]
		&& isset( $assoc_args['ids'] )
	) {
		$assoc_args['format'] = 'ids';
		unset( $assoc_args['ids'] );
	}

	// --json  ->  --format=json
	if ( isset( $assoc_args['json'] ) ) {
		$assoc_args['format'] = 'json';
		unset( $assoc_args['json'] );
	}

	// --{version|info}  ->  cli {version|info}
	if ( empty( $args ) ) {
		$special_flags = [ 'version', 'info' ];
		foreach ( $special_flags as $key ) {
			if ( isset( $assoc_args[ $key ] ) ) {
				$args = [ 'cli', $key ];
				unset( $assoc_args[ $key ] );
				break;
			}
		}
	}

	// (post|comment|site|term) url  --> (post|comment|site|term) list --*__in --field=url
	if ( count( $args ) >= 2 && in_array( $args[0], [ 'post', 'comment', 'site', 'term' ], true ) && 'url' === $args[1] ) {
		switch ( $args[0] ) {
			case 'post':
				$post_ids                = array_slice( $args, 2 );
				$args                    = [ 'post', 'list' ];
				$assoc_args['post__in']  = implode( ',', $post_ids );
				$assoc_args['post_type'] = 'any';
				$assoc_args['orderby']   = 'post__in';
				$assoc_args['field']     = 'url';
				break;
			case 'comment':
				$comment_ids               = array_slice( $args, 2 );
				$args                      = [ 'comment', 'list' ];
				$assoc_args['comment__in'] = implode( ',', $comment_ids );
				$assoc_args['orderby']     = 'comment__in';
				$assoc_args['field']       = 'url';
				break;
			case 'site':
				$site_ids               = array_slice( $args, 2 );
				$args                   = [ 'site', 'list' ];
				$assoc_args['site__in'] = implode( ',', $site_ids );
				$assoc_args['field']    = 'url';
				break;
			case 'term':
				$taxonomy = '';
				if ( isset( $args[2] ) ) {
					$taxonomy = $args[2];
				}
				$term_ids              = array_slice( $args, 3 );
				$args                  = [ 'term', 'list', $taxonomy ];
				$assoc_args['include'] = implode( ',', $term_ids );
				$assoc_args['orderby'] = 'include';
				$assoc_args['field']   = 'url';
				break;
		}
	}

	// config get --[global|constant]=<global|constant> --> config get <name> --type=constant|variable
	// config get --> config list
	if ( count( $args ) === 2
		&& 'config' === $args[0]
		&& 'get' === $args[1] ) {
		if ( isset( $assoc_args['global'] ) ) {
			$name = $assoc_args['global'];
			$type = 'variable';
			unset( $assoc_args['global'] );
		} elseif ( isset( $assoc_args['constant'] ) ) {
			$name = $assoc_args['constant'];
			$type = 'constant';
			unset( $assoc_args['constant'] );
		}
		if ( ! empty( $name ) && ! empty( $type ) ) {
			$args[]             = $name;
			$assoc_args['type'] = $type;
		} else {
			// We had a 'config get' without a '<name>', so assume 'list' was wanted.
			$args[1] = 'list';
		}
	}

	return [ $args, $assoc_args ];
}