@@ -250,7 +250,7 @@ protected function get_all_items() {
250250 }
251251
252252 /**
253- * Activates a plugin .
253+ * Activates one or more plugins .
254254 *
255255 * ## OPTIONS
256256 *
@@ -279,10 +279,8 @@ public function activate( $args, $assoc_args = array() ) {
279279 $ network_wide = \WP_CLI \Utils \get_flag_value ( $ assoc_args , 'network ' );
280280 $ all = \WP_CLI \Utils \get_flag_value ( $ assoc_args , 'all ' , false );
281281
282- if ( $ all ) {
283- $ args = array_map ( function ( $ file ){
284- return Utils \get_plugin_name ( $ file );
285- }, array_keys ( $ this ->get_all_plugins () ) );
282+ if ( ! ( $ args = $ this ->check_optional_args_and_all ( $ args , $ all ) ) ) {
283+ return ;
286284 }
287285
288286 $ successes = $ errors = 0 ;
@@ -325,7 +323,7 @@ public function activate( $args, $assoc_args = array() ) {
325323 }
326324
327325 /**
328- * Deactivates a plugin .
326+ * Deactivates one or more plugins .
329327 *
330328 * ## OPTIONS
331329 *
@@ -352,10 +350,8 @@ public function deactivate( $args, $assoc_args = array() ) {
352350 $ network_wide = \WP_CLI \Utils \get_flag_value ( $ assoc_args , 'network ' );
353351 $ disable_all = \WP_CLI \Utils \get_flag_value ( $ assoc_args , 'all ' );
354352
355- if ( $ disable_all ) {
356- $ args = array_map ( function ( $ file ){
357- return Utils \get_plugin_name ( $ file );
358- }, array_keys ( $ this ->get_all_plugins () ) );
353+ if ( ! ( $ args = $ this ->check_optional_args_and_all ( $ args , $ disable_all ) ) ) {
354+ return ;
359355 }
360356
361357 $ successes = $ errors = 0 ;
@@ -610,6 +606,12 @@ protected function install_from_repo( $slug, $assoc_args ) {
610606 * @alias upgrade
611607 */
612608 public function update ( $ args , $ assoc_args ) {
609+ $ all = Utils \get_flag_value ( $ assoc_args , 'all ' , false );
610+
611+ if ( ! ( $ args = $ this ->check_optional_args_and_all ( $ args , $ all ) ) ) {
612+ return ;
613+ }
614+
613615 if ( isset ( $ assoc_args ['version ' ] ) ) {
614616 foreach ( $ this ->fetcher ->get_many ( $ args ) as $ plugin ) {
615617 $ assoc_args ['force ' ] = 1 ;
@@ -662,12 +664,12 @@ protected function filter_item_list( $items, $args ) {
662664 }
663665
664666 /**
665- * Installs a plugin .
667+ * Installs one or more plugins .
666668 *
667669 * ## OPTIONS
668670 *
669671 * <plugin|zip|url>...
670- * : A plugin slug, the path to a local zip file, or URL to a remote zip file.
672+ * : One or more plugins to install. Accepts a plugin slug, the path to a local zip file, or a URL to a remote zip file.
671673 *
672674 * [--version=<version>]
673675 * : If set, get that particular version from wordpress.org, instead of the
@@ -804,7 +806,7 @@ public function get( $args, $assoc_args ) {
804806 }
805807
806808 /**
807- * Uninstalls a plugin .
809+ * Uninstalls one or more plugins .
808810 *
809811 * ## OPTIONS
810812 *
@@ -1072,4 +1074,28 @@ private function _delete( $plugin ) {
10721074 private function get_all_plugins () {
10731075 return apply_filters ( 'all_plugins ' , get_plugins () );
10741076 }
1077+
1078+ /**
1079+ * If have optional args ([<plugin>...]) and an all option, then check have something to do.
1080+ *
1081+ * @param array $args Passed-in arguments.
1082+ * @param bool $all All flag.
1083+ * @return array Same as $args if not all, otherwise all slugs.
1084+ */
1085+ private function check_optional_args_and_all ( $ args , $ all ) {
1086+ if ( $ all ) {
1087+ $ args = array_map ( function ( $ file ){
1088+ return Utils \get_plugin_name ( $ file );
1089+ }, array_keys ( $ this ->get_all_plugins () ) );
1090+ }
1091+
1092+ if ( empty ( $ args ) ) {
1093+ if ( ! $ all ) {
1094+ WP_CLI ::error ( 'Please specify one or more plugins, or use --all. ' );
1095+ }
1096+ WP_CLI ::success ( 'No plugins installed. ' ); // Don't error if --all given for BC.
1097+ }
1098+
1099+ return $ args ;
1100+ }
10751101}
0 commit comments