public function uninstall( $args ) {
		list( $package_name ) = $args;

		$this->set_composer_auth_env_var();
		$package = $this->get_installed_package_by_name( $package_name );
		if ( false === $package ) {
			WP_CLI::error( 'Package not installed.' );
		}
		$package_name = $package->getPrettyName(); // Make sure package name is what's in composer.json.

		// Read the WP-CLI packages composer.json and do some initial error checking.
		list( $json_path, $composer_backup, $composer_backup_decoded ) = $this->get_composer_json_path_backup_decoded();

		// Revert on shutdown if `$revert` is true (set to false on success).
		$revert = true;
		$this->register_revert_shutdown_function( $json_path, $composer_backup, $revert );

		// Remove the 'require' from composer.json.
		WP_CLI::log( sprintf( 'Removing require statement from %s', $json_path ) );
		$manipulator = new JsonManipulator( $composer_backup );
		$manipulator->removeSubNode( 'require', $package_name, true /*caseInsensitive*/ );

		// Remove the 'repository' details from composer.json.
		WP_CLI::log( sprintf( 'Removing repository details from %s', $json_path ) );
		$manipulator->removeSubNode( 'repositories', $package_name, true /*caseInsensitive*/ );

		file_put_contents( $json_path, $manipulator->getContents() );
		$composer = $this->get_composer();

		// Set up the installer.
		$install = Installer::create( new NullIO(), $composer );
		$install->setUpdate( true ); // Installer class will only override composer.lock with this flag
		$install->setPreferSource( true ); // Use VCS when VCS for easier contributions.

		WP_CLI::log( 'Removing package directories and regenerating autoloader...' );
		$res = false;
		try {
			$res = $install->run();
		} catch ( Exception $e ) {
			WP_CLI::warning( $e->getMessage() );
		}

		if ( 0 === $res ) {
			$revert = false;
			WP_CLI::success( 'Uninstalled package.' );
		} else {
			$res_msg = $res ? " (Composer return code {$res})" : ''; // $res may be null apparently.
			WP_CLI::error( "Package removal failed{$res_msg}." );
		}
	}
public function uninstall( $args ) {
		list( $package_name ) = $args;

		$this->set_composer_auth_env_var();
		$package = $this->get_installed_package_by_name( $package_name );
		if ( false === $package ) {
			WP_CLI::error( 'Package not installed.' );
		}
		$package_name = $package->getPrettyName(); // Make sure package name is what's in composer.json.

		// Read the WP-CLI packages composer.json and do some initial error checking.
		list( $json_path, $composer_backup, $composer_backup_decoded ) = $this->get_composer_json_path_backup_decoded();

		// Revert on shutdown if `$revert` is true (set to false on success).
		$revert = true;
		$this->register_revert_shutdown_function( $json_path, $composer_backup, $revert );

		// Remove the 'require' from composer.json.
		WP_CLI::log( sprintf( 'Removing require statement from %s', $json_path ) );
		$manipulator = new JsonManipulator( $composer_backup );
		$manipulator->removeSubNode( 'require', $package_name, true /*caseInsensitive*/ );

		// Remove the 'repository' details from composer.json.
		WP_CLI::log( sprintf( 'Removing repository details from %s', $json_path ) );
		$manipulator->removeSubNode( 'repositories', $package_name, true /*caseInsensitive*/ );

		file_put_contents( $json_path, $manipulator->getContents() );
		$composer = $this->get_composer();

		// Set up the installer.
		$install = Installer::create( new NullIO(), $composer );
		$install->setUpdate( true ); // Installer class will only override composer.lock with this flag
		$install->setPreferSource( true ); // Use VCS when VCS for easier contributions.

		WP_CLI::log( 'Removing package directories and regenerating autoloader...' );
		$res = false;
		try {
			$res = $install->run();
		} catch ( Exception $e ) {
			WP_CLI::warning( $e->getMessage() );
		}

		if ( 0 === $res ) {
			$revert = false;
			WP_CLI::success( 'Uninstalled package.' );
		} else {
			$res_msg = $res ? " (Composer return code {$res})" : ''; // $res may be null apparently.
			WP_CLI::error( "Package removal failed{$res_msg}." );
		}
	}
public function uninstall ( $ args ) { list ( $ package_name ) = $ args ; $ this -> set_composer_auth_env_var ( ) ; $ package = $ this -> get_installed_package_by_name ( $ package_name ) ; if ( false === $ package ) { WP_CLI :: error ( 'Package not installed.' ) ; } $ package_name = $ package -> getPrettyName ( ) ; // Make sure package name is what's in composer.json. // Read the WP-CLI packages composer.json and do some initial error checking. list ( $ json_path , $ composer_backup , $ composer_backup_decoded ) = $ this -> get_composer_json_path_backup_decoded ( ) ; // Revert on shutdown if `$revert` is true (set to false on success). $ revert = true ; $ this -> register_revert_shutdown_function ( $ json_path , $ composer_backup , $ revert ) ; // Remove the 'require' from composer.json. WP_CLI :: log ( sprintf ( 'Removing require statement from %s' , $ json_path ) ) ; $ manipulator = new JsonManipulator ( $ composer_backup ) ; $ manipulator -> removeSubNode ( 'require' , $ package_name , true /*caseInsensitive*/ ) ; // Remove the 'repository' details from composer.json. WP_CLI :: log ( sprintf ( 'Removing repository details from %s' , $ json_path ) ) ; $ manipulator -> removeSubNode ( 'repositories' , $ package_name , true /*caseInsensitive*/ ) ; file_put_contents ( $ json_path , $ manipulator -> getContents ( ) ) ; $ composer = $ this -> get_composer ( ) ; // Set up the installer. $ install = Installer :: create ( new NullIO ( ) , $ composer ) ; $ install -> setUpdate ( true ) ; // Installer class will only override composer.lock with this flag $ install -> setPreferSource ( true ) ; // Use VCS when VCS for easier contributions. WP_CLI :: log ( 'Removing package directories and regenerating autoloader...' ) ; $ res = false ; try { $ res = $ install -> run ( ) ; } catch ( Exception $ e ) { WP_CLI :: warning ( $ e -> getMessage ( ) ) ; } if ( 0 === $ res ) { $ revert = false ; WP_CLI :: success ( 'Uninstalled package.' ) ; } else { $ res_msg = $ res ? " (Composer return code {$res})" : '' ; // $res may be null apparently. WP_CLI :: error ( "Package removal failed{$res_msg}." ) ; } }
Uninstalls a WP-CLI package.

## OPTIONS

<name>
: Name of the package to uninstall.

## EXAMPLES

$ wp package uninstall wp-cli/server-command
Removing require statement from /home/person/.wp-cli/packages/composer.json
Deleting package directory /home/person/.wp-cli/packages/vendor/wp-cli/server-command
Regenerating Composer autoload.
Success: Uninstalled package.
Uninstalls a WP - CLI package .