Jetpack_CLI

Control your local Jetpack installation.

Defined (1)

The class is defined in the following location(s).

/class.jetpack-cli.php  
  1. class Jetpack_CLI extends WP_CLI_Command { 
  2.  
  3. // Aesthetics 
  4. public $green_open = "\033[32m"; 
  5. public $red_open = "\033[31m"; 
  6. public $yellow_open = "\033[33m"; 
  7. public $color_close = "\033[0m"; 
  8.  
  9. /** 
  10. * Get Jetpack Details 
  11. * ## OPTIONS 
  12. * empty: Leave it empty for basic stats 
  13. * full: View full stats. It's the data from the heartbeat 
  14. * ## EXAMPLES 
  15. * wp jetpack status 
  16. * wp jetpack status full 
  17. */ 
  18. public function status( $args, $assoc_args ) { 
  19. if ( ! Jetpack::is_active() ) { 
  20. WP_CLI::error( __( 'Jetpack is not currently connected to WordPress.com', 'jetpack' ) ); 
  21.  
  22. if ( isset( $args[0] ) && 'full' !== $args[0] ) { 
  23. WP_CLI::error( sprintf( __( '%s is not a valid command.', 'jetpack' ), $args[0] ) ); 
  24.  
  25. /** 
  26. * Are they asking for all data? 
  27. * Loop through heartbeat data and organize by priority. 
  28. */ 
  29. $all_data = ( isset( $args[0] ) && 'full' == $args[0] ) ? 'full' : false; 
  30. if ( $all_data ) { 
  31. WP_CLI::success( __( 'Jetpack is currently connected to WordPress.com', 'jetpack' ) ); 
  32. WP_CLI::line( sprintf( __( "The Jetpack Version is %s", 'jetpack' ), JETPACK__VERSION ) ); 
  33. WP_CLI::line( sprintf( __( "The WordPress.com blog_id is %d", 'jetpack' ), Jetpack_Options::get_option( 'id' ) ) ); 
  34.  
  35. // Heartbeat data 
  36. WP_CLI::line( "\n" . __( 'Additional data: ', 'jetpack' ) ); 
  37.  
  38. // Get the filtered heartbeat data. 
  39. // Filtered so we can color/list by severity 
  40. $stats = Jetpack::jetpack_check_heartbeat_data(); 
  41.  
  42. // Display red flags first 
  43. foreach ( $stats['bad'] as $stat => $value ) { 
  44. printf( "$this->red_open%-'.16s %s $this->color_close\n", $stat, $value ); 
  45.  
  46. // Display caution warnings next 
  47. foreach ( $stats['caution'] as $stat => $value ) { 
  48. printf( "$this->yellow_open%-'.16s %s $this->color_close\n", $stat, $value ); 
  49.  
  50. // The rest of the results are good! 
  51. foreach ( $stats['good'] as $stat => $value ) { 
  52.  
  53. // Modules should get special spacing for aestetics 
  54. if ( strpos( $stat, 'odule-' ) ) { 
  55. printf( "%-'.30s %s\n", $stat, $value ); 
  56. usleep( 4000 ); // For dramatic effect lolz 
  57. continue; 
  58. printf( "%-'.16s %s\n", $stat, $value ); 
  59. usleep( 4000 ); // For dramatic effect lolz 
  60. } else { 
  61. // Just the basics 
  62. WP_CLI::success( __( 'Jetpack is currently connected to WordPress.com', 'jetpack' ) ); 
  63. WP_CLI::line( sprintf( __( 'The Jetpack Version is %s', 'jetpack' ), JETPACK__VERSION ) ); 
  64. WP_CLI::line( sprintf( __( 'The WordPress.com blog_id is %d', 'jetpack' ), Jetpack_Options::get_option( 'id' ) ) ); 
  65. WP_CLI::line( "\n" . _x( "View full status with 'wp jetpack status full'", '"wp jetpack status full" is a command - do not translate', 'jetpack' ) ); 
  66.  
  67. /** 
  68. * Disconnect Jetpack Blogs or Users 
  69. * ## OPTIONS 
  70. * blog: Disconnect the entire blog. 
  71. * user <user_identifier>: Disconnect a specific user from WordPress.com. 
  72. * Please note, the primary account that the blog is connected 
  73. * to WordPress.com with cannot be disconnected without 
  74. * disconnecting the entire blog. 
  75. * ## EXAMPLES 
  76. * wp jetpack disconnect blog 
  77. * wp jetpack disconnect user 13 
  78. * wp jetpack disconnect user username 
  79. * wp jetpack disconnect user email@domain.com 
  80. * @synopsis <blog|user> [<user_identifier>] 
  81. */ 
  82. public function disconnect( $args, $assoc_args ) { 
  83. if ( ! Jetpack::is_active() ) { 
  84. WP_CLI::error( __( 'You cannot disconnect, without having first connected.', 'jetpack' ) ); 
  85.  
  86. $action = isset( $args[0] ) ? $args[0] : 'prompt'; 
  87. if ( ! in_array( $action, array( 'blog', 'user', 'prompt' ) ) ) { 
  88. WP_CLI::error( sprintf( __( '%s is not a valid command.', 'jetpack' ), $action ) ); 
  89.  
  90. if ( in_array( $action, array( 'user' ) ) ) { 
  91. if ( isset( $args[1] ) ) { 
  92. $user_id = $args[1]; 
  93. if ( ctype_digit( $user_id ) ) { 
  94. $field = 'id'; 
  95. $user_id = (int) $user_id; 
  96. } elseif ( is_email( $user_id ) ) { 
  97. $field = 'email'; 
  98. $user_id = sanitize_user( $user_id, true ); 
  99. } else { 
  100. $field = 'login'; 
  101. $user_id = sanitize_user( $user_id, true ); 
  102. if ( ! $user = get_user_by( $field, $user_id ) ) { 
  103. WP_CLI::error( __( 'Please specify a valid user.', 'jetpack' ) ); 
  104. } else { 
  105. WP_CLI::error( __( 'Please specify a user by either ID, username, or email.', 'jetpack' ) ); 
  106.  
  107. switch ( $action ) { 
  108. case 'blog': 
  109. Jetpack::log( 'disconnect' ); 
  110. Jetpack::disconnect(); 
  111. WP_CLI::success( __( 'Jetpack has been successfully disconnected.', 'jetpack' ) ); 
  112. break; 
  113. case 'user': 
  114. if ( Jetpack::unlink_user( $user->ID ) ) { 
  115. Jetpack::log( 'unlink', $user->ID ); 
  116. WP_CLI::success( sprintf( __( '%s has been successfully disconnected.', 'jetpack' ), $action ) ); 
  117. } else { 
  118. WP_CLI::error( sprintf( __( '%s could not be disconnected. Are you sure they\'re connected currently?', 'jetpack' ), "{$user->login} <{$user->email}>" ) ); 
  119. break; 
  120. case 'prompt': 
  121. WP_CLI::error( __( 'Please specify if you would like to disconnect a blog or user.', 'jetpack' ) ); 
  122. break; 
  123.  
  124. /** 
  125. * Reset Jetpack options and settings to default 
  126. * ## OPTIONS 
  127. * modules: Resets modules to default state ( get_default_modules() ) 
  128. * options: Resets all Jetpack options except: 
  129. * - All private options (Blog token, user token, etc...) 
  130. * - id (The Client ID/WP.com Blog ID of this site) 
  131. * - master_user 
  132. * - version 
  133. * - activated 
  134. * ## EXAMPLES 
  135. * wp jetpack reset options 
  136. * wp jetpack reset modules 
  137. * @synopsis <modules|options> 
  138. */ 
  139. public function reset( $args, $assoc_args ) { 
  140. $action = isset( $args[0] ) ? $args[0] : 'prompt'; 
  141. if ( ! in_array( $action, array( 'options', 'modules' ) ) ) { 
  142. WP_CLI::error( sprintf( __( '%s is not a valid command.', 'jetpack' ), $action ) ); 
  143.  
  144. // Are you sure? 
  145. jetpack_cli_are_you_sure(); 
  146.  
  147. switch ( $action ) { 
  148. case 'options': 
  149. $options_to_reset = Jetpack::get_jetpack_options_for_reset(); 
  150.  
  151. // Reset the Jetpack options 
  152. _e( "Resetting Jetpack Options...\n", "jetpack" ); 
  153. sleep(1); // Take a breath 
  154. foreach ( $options_to_reset['jp_options'] as $option_to_reset ) { 
  155. Jetpack_Options::delete_option( $option_to_reset ); 
  156. usleep( 100000 ); 
  157. WP_CLI::success( sprintf( __( '%s option reset', 'jetpack' ), $option_to_reset ) ); 
  158.  
  159. // Reset the WP options 
  160. _e( "Resetting the jetpack options stored in wp_options...\n", "jetpack" ); 
  161. usleep( 500000 ); // Take a breath 
  162. foreach ( $options_to_reset['wp_options'] as $option_to_reset ) { 
  163. delete_option( $option_to_reset ); 
  164. usleep( 100000 ); 
  165. WP_CLI::success( sprintf( __( '%s option reset', 'jetpack' ), $option_to_reset ) ); 
  166.  
  167. // Reset to default modules 
  168. _e( "Resetting default modules...\n", "jetpack" ); 
  169. usleep( 500000 ); // Take a breath 
  170. $default_modules = Jetpack::get_default_modules(); 
  171. Jetpack_Options::update_option( 'active_modules', $default_modules ); 
  172. WP_CLI::success( __( 'Modules reset to default.', 'jetpack' ) ); 
  173.  
  174. // Jumpstart option is special 
  175. Jetpack_Options::update_option( 'jumpstart', 'new_connection' ); 
  176. WP_CLI::success( __( 'jumpstart option reset', 'jetpack' ) ); 
  177. break; 
  178. case 'modules': 
  179. $default_modules = Jetpack::get_default_modules(); 
  180. Jetpack_Options::update_option( 'active_modules', $default_modules ); 
  181. WP_CLI::success( __( 'Modules reset to default.', 'jetpack' ) ); 
  182. break; 
  183. case 'prompt': 
  184. WP_CLI::error( __( 'Please specify if you would like to reset your options, or modules', 'jetpack' ) ); 
  185. break; 
  186.  
  187. /** 
  188. * Manage Jetpack Modules 
  189. * ## OPTIONS 
  190. * list : View all available modules, and their status. 
  191. * activate all : Activate all modules 
  192. * deactivate all: Deactivate all modules 
  193. * activate <module_slug> : Activate a module. 
  194. * deactivate <module_slug> : Deactivate a module. 
  195. * toggle <module_slug> : Toggle a module on or off. 
  196. * ## EXAMPLES 
  197. * wp jetpack module list 
  198. * wp jetpack module activate stats 
  199. * wp jetpack module deactivate stats 
  200. * wp jetpack module toggle stats 
  201. * wp jetpack module activate all 
  202. * wp jetpack module deactivate all 
  203. * @synopsis <list|activate|deactivate|toggle> [<module_name>] 
  204. */ 
  205. public function module( $args, $assoc_args ) { 
  206. $action = isset( $args[0] ) ? $args[0] : 'list'; 
  207. if ( ! in_array( $action, array( 'list', 'activate', 'deactivate', 'toggle' ) ) ) { 
  208. WP_CLI::error( sprintf( __( '%s is not a valid command.', 'jetpack' ), $action ) ); 
  209. if ( in_array( $action, array( 'activate', 'deactivate', 'toggle' ) ) ) { 
  210. if ( isset( $args[1] ) ) { 
  211. $module_slug = $args[1]; 
  212. if ( 'all' !== $module_slug && ! Jetpack::is_module( $module_slug ) ) { 
  213. WP_CLI::error( sprintf( __( '%s is not a valid module.', 'jetpack' ), $module_slug ) ); 
  214. if ( 'toggle' == $action ) { 
  215. $action = Jetpack::is_module_active( $module_slug ) ? 'deactivate' : 'activate'; 
  216. // Bulk actions 
  217. if ( 'all' == $args[1] ) { 
  218. $action = ( 'deactivate' == $action ) ? 'deactivate_all' : 'activate_all'; 
  219. // VaultPress needs to be handled elsewhere. 
  220. if ( in_array( $action, array( 'activate', 'deactivate', 'toggle' ) ) && 'vaultpress' == $args[1] ) { 
  221. WP_CLI::error( sprintf( _x( 'Please visit %s to configure your VaultPress subscription.', '%s is a website', 'jetpack' ), esc_url( 'https://vaultpress.com/jetpack/' ) ) ); 
  222. } else { 
  223. WP_CLI::line( __( 'Please specify a valid module.', 'jetpack' ) ); 
  224. $action = 'list'; 
  225. switch ( $action ) { 
  226. case 'list': 
  227. WP_CLI::line( __( 'Available Modules:', 'jetpack' ) ); 
  228. $modules = Jetpack::get_available_modules(); 
  229. sort( $modules ); 
  230. foreach( $modules as $module_slug ) { 
  231. if ( 'vaultpress' == $module_slug ) { 
  232. continue; 
  233. $active = Jetpack::is_module_active( $module_slug ) ? __( 'Active', 'jetpack' ) : __( 'Inactive', 'jetpack' ); 
  234. WP_CLI::line( "\t" . str_pad( $module_slug, 24 ) . $active ); 
  235. break; 
  236. case 'activate': 
  237. $module = Jetpack::get_module( $module_slug ); 
  238. Jetpack::log( 'activate', $module_slug ); 
  239. Jetpack::activate_module( $module_slug, false, false ); 
  240. WP_CLI::success( sprintf( __( '%s has been activated.', 'jetpack' ), $module['name'] ) ); 
  241. break; 
  242. case 'activate_all': 
  243. $modules = Jetpack::get_available_modules(); 
  244. Jetpack_Options::update_option( 'active_modules', $modules ); 
  245. WP_CLI::success( __( 'All modules activated!', 'jetpack' ) ); 
  246. break; 
  247. case 'deactivate': 
  248. $module = Jetpack::get_module( $module_slug ); 
  249. Jetpack::log( 'deactivate', $module_slug ); 
  250. Jetpack::deactivate_module( $module_slug ); 
  251. WP_CLI::success( sprintf( __( '%s has been deactivated.', 'jetpack' ), $module['name'] ) ); 
  252. break; 
  253. case 'deactivate_all': 
  254. Jetpack_Options::update_option( 'active_modules', '' ); 
  255. WP_CLI::success( __( 'All modules deactivated!', 'jetpack' ) ); 
  256. break; 
  257. case 'toggle': 
  258. // Will never happen, should have been handled above and changed to activate or deactivate. 
  259. break; 
  260.  
  261. /** 
  262. * Manage Protect Settings 
  263. * ## OPTIONS 
  264. * whitelist: Whitelist an IP address. You can also read or clear the whitelist. 
  265. * ## EXAMPLES 
  266. * wp jetpack protect whitelist <ip address> 
  267. * wp jetpack protect whitelist list 
  268. * wp jetpack protect whitelist clear 
  269. * @synopsis <whitelist> [<ip|ip_low-ip_high|list|clear>] 
  270. */ 
  271. public function protect( $args, $assoc_args ) { 
  272. $action = isset( $args[0] ) ? $args[0] : 'prompt'; 
  273. if ( ! in_array( $action, array( 'whitelist' ) ) ) { 
  274. WP_CLI::error( sprintf( __( '%s is not a valid command.', 'jetpack' ), $action ) ); 
  275. // Check if module is active 
  276. if ( ! Jetpack::is_module_active( __FUNCTION__ ) ) { 
  277. WP_CLI::error( sprintf( _x( '%s is not active. You can activate it with "wp jetpack module activate %s"', '"wp jetpack module activate" is a command - do not translate', 'jetpack' ), __FUNCTION__, __FUNCTION__ ) ); 
  278. if ( in_array( $action, array( 'whitelist' ) ) ) { 
  279. if ( isset( $args[1] ) ) { 
  280. $action = 'whitelist'; 
  281. } else { 
  282. $action = 'prompt'; 
  283. switch ( $action ) { 
  284. case 'whitelist': 
  285. $whitelist = array(); 
  286. $new_ip = $args[1]; 
  287. $current_whitelist = get_site_option( 'jetpack_protect_whitelist' ); 
  288.  
  289. // Build array of IPs that are already whitelisted. 
  290. // Re-build manually instead of using jetpack_protect_format_whitelist() so we can easily get 
  291. // low & high range params for jetpack_protect_ip_address_is_in_range(); 
  292. foreach( $current_whitelist as $whitelisted ) { 
  293.  
  294. // IP ranges 
  295. if ( $whitelisted->range ) { 
  296.  
  297. // Is it already whitelisted? 
  298. if ( jetpack_protect_ip_address_is_in_range( $new_ip, $whitelisted->range_low, $whitelisted->range_high ) ) { 
  299. WP_CLI::error( sprintf( __( "%s has already been whitelisted", 'jetpack' ), $new_ip ) ); 
  300. break; 
  301. $whitelist[] = $whitelisted->range_low . " - " . $whitelisted->range_high; 
  302.  
  303. } else { // Individual IPs 
  304.  
  305. // Check if the IP is already whitelisted (single IP only) 
  306. if ( $new_ip == $whitelisted->ip_address ) { 
  307. WP_CLI::error( sprintf( __( "%s has already been whitelisted", 'jetpack' ), $new_ip ) ); 
  308. break; 
  309. $whitelist[] = $whitelisted->ip_address; 
  310.  
  311.  
  312. /** 
  313. * List the whitelist 
  314. * Done here because it's easier to read the $whitelist array after it's been rebuilt 
  315. */ 
  316. if ( isset( $args[1] ) && 'list' == $args[1] ) { 
  317. if ( ! empty( $whitelist ) ) { 
  318. WP_CLI::success( __( 'Here are your whitelisted IPs:', 'jetpack' ) ); 
  319. foreach ( $whitelist as $ip ) { 
  320. WP_CLI::line( "\t" . str_pad( $ip, 24 ) ) ; 
  321. } else { 
  322. WP_CLI::line( __( 'Whitelist is empty.', "jetpack" ) ) ; 
  323. break; 
  324.  
  325. /** 
  326. * Clear the whitelist 
  327. */ 
  328. if ( isset( $args[1] ) && 'clear' == $args[1] ) { 
  329. if ( ! empty( $whitelist ) ) { 
  330. $whitelist = array(); 
  331. jetpack_protect_save_whitelist( $whitelist ); 
  332. WP_CLI::success( __( 'Cleared all whitelisted IPs', 'jetpack' ) ); 
  333. } else { 
  334. WP_CLI::line( __( 'Whitelist is empty.', "jetpack" ) ) ; 
  335. break; 
  336.  
  337. // Append new IP to whitelist array 
  338. array_push( $whitelist, $new_ip ); 
  339.  
  340. // Save whitelist if there are no errors 
  341. $result = jetpack_protect_save_whitelist( $whitelist ); 
  342. if ( is_wp_error( $result ) ) { 
  343. WP_CLI::error( __( $result, 'jetpack' ) ); 
  344.  
  345. WP_CLI::success( sprintf( __( '%s has been whitelisted.', 'jetpack' ), $new_ip ) ); 
  346. break; 
  347. case 'prompt': 
  348. WP_CLI::error( 
  349. __( 'No command found.', 'jetpack' ) . "\n" . 
  350. __( 'Please enter the IP address you want to whitelist.', 'jetpack' ) . "\n" . 
  351. _x( 'You can save a range of IPs {low_range}-{high_range}. No spaces allowed. (example: 1.1.1.1-2.2.2.2)', 'Instructions on how to whitelist IP ranges - low_range/high_range should be translated.', 'jetpack' ) . "\n" . 
  352. _x( "You can also 'list' or 'clear' the whitelist.", "'list' and 'clear' are commands and should not be translated", 'jetpack' ) . "\n" 
  353. ); 
  354. break; 
  355.  
  356. /** 
  357. * Manage Jetpack Options 
  358. * ## OPTIONS 
  359. * list : List all jetpack options and their values 
  360. * delete : Delete an option 
  361. * - can only delete options that are white listed. 
  362. * update : update an option 
  363. * - can only update option strings 
  364. * get : get the value of an option 
  365. * ## EXAMPLES 
  366. * wp jetpack options list 
  367. * wp jetpack options get <option_name> 
  368. * wp jetpack options delete <option_name> 
  369. * wp jetpack options update <option_name> [<option_value>] 
  370. * @synopsis <list|get|delete|update> [<option_name>] [<option_value>] 
  371. */ 
  372. public function options( $args, $assoc_args ) { 
  373. $action = isset( $args[0] ) ? $args[0] : 'list'; 
  374. $safe_to_modify = Jetpack::get_jetpack_options_for_reset(); 
  375.  
  376. // Jumpstart is special 
  377. array_push( $safe_to_modify, 'jumpstart' ); 
  378.  
  379. // Is the option flagged as unsafe? 
  380. $flagged = ! in_array( $args[1], $safe_to_modify ); 
  381.  
  382. if ( ! in_array( $action, array( 'list', 'get', 'delete', 'update' ) ) ) { 
  383. WP_CLI::error( sprintf( __( '%s is not a valid command.', 'jetpack' ), $action ) ); 
  384.  
  385. if ( isset( $args[0] ) ) { 
  386. if ( 'get' == $args[0] && isset( $args[1] ) ) { 
  387. $action = 'get'; 
  388. } else if ( 'delete' == $args[0] && isset( $args[1] ) ) { 
  389. $action = 'delete'; 
  390. } else if ( 'update' == $args[0] && isset( $args[1] ) ) { 
  391. $action = 'update'; 
  392. } else { 
  393. $action = 'list'; 
  394.  
  395. // Bail if the option isn't found 
  396. $option = isset( $args[1] ) ? Jetpack_Options::get_option( $args[1] ) : false; 
  397. if ( isset( $args[1] ) && ! $option && 'update' !== $args[0] ) { 
  398. WP_CLI::error( __( 'Option not found or is empty. Use "list" to list option names', 'jetpack' ) ); 
  399.  
  400. // Let's print_r the option if it's an array 
  401. // Used in the 'get' and 'list' actions 
  402. $option = is_array( $option ) ? print_r( $option ) : $option; 
  403.  
  404. switch ( $action ) { 
  405. case 'get': 
  406. WP_CLI::success( "\t" . $option ); 
  407. break; 
  408. case 'delete': 
  409. jetpack_cli_are_you_sure( $flagged ); 
  410.  
  411. Jetpack_Options::delete_option( $args[1] ); 
  412. WP_CLI::success( sprintf( __( 'Deleted option: %s', 'jetpack' ), $args[1] ) ); 
  413. break; 
  414. case 'update': 
  415. jetpack_cli_are_you_sure( $flagged ); 
  416.  
  417. // Updating arrays would get pretty tricky... 
  418. $value = Jetpack_Options::get_option( $args[1] ); 
  419. if ( $value && is_array( $value ) ) { 
  420. WP_CLI::error( __( 'Sorry, no updating arrays at this time', 'jetpack' ) ); 
  421.  
  422. Jetpack_Options::update_option( $args[1], $args[2] ); 
  423. WP_CLI::success( sprintf( _x( 'Updated option: %s to "%s"', 'Updating an option from "this" to "that".', 'jetpack' ), $args[1], $args[2] ) ); 
  424. break; 
  425. case 'list': 
  426. $options_compact = Jetpack_Options::get_option_names(); 
  427. $options_non_compact = Jetpack_Options::get_option_names( 'non_compact' ); 
  428. $options_private = Jetpack_Options::get_option_names( 'private' ); 
  429. $options = array_merge( $options_compact, $options_non_compact, $options_private ); 
  430.  
  431. // Table headers 
  432. WP_CLI::line( "\t" . str_pad( __( 'Option', 'jetpack' ), 30 ) . __( 'Value', 'jetpack' ) ); 
  433.  
  434. // List out the options and their values 
  435. // Tell them if the value is empty or not 
  436. // Tell them if it's an array 
  437. foreach ( $options as $option ) { 
  438. $value = Jetpack_Options::get_option( $option ); 
  439. if ( ! $value ) { 
  440. WP_CLI::line( "\t" . str_pad( $option, 30 ) . 'Empty' ); 
  441. continue; 
  442.  
  443. if ( ! is_array( $value ) ) { 
  444. WP_CLI::line( "\t" . str_pad( $option, 30 ) . $value ); 
  445. } else if ( is_array( $value ) ) { 
  446. WP_CLI::line( "\t" . str_pad( $option, 30 ) . 'Array - Use "get <option>" to read option array.' ); 
  447. $option_text = '{' . _x( 'option', 'a variable command that a user can write, provided in the printed instructions', 'jetpack' ) . '}'; 
  448. $value_text = '{' . _x( 'value', 'the value that they want to update the option to', 'jetpack' ) . '}'; 
  449.  
  450. WP_CLI::success( 
  451. _x( "Above are your options. You may 'get', 'delete', and 'update' them.", "'get', 'delete', and 'update' are commands - do not translate.", 'jetpack' ) . "\n" . 
  452. str_pad( 'wp jetpack options get', 26 ) . $option_text . "\n" . 
  453. str_pad( 'wp jetpack options delete', 26 ) . $option_text . "\n" . 
  454. str_pad( 'wp jetpack options update', 26 ) . "$option_text $value_text" . "\n" . 
  455. _x( "Type 'wp jetpack options' for more info.", "'wp jetpack options' is a command - do not translate.", 'jetpack' ) . "\n" 
  456. ); 
  457. break;