Changeset 5446
- Timestamp:
- 04/30/2017 04:20:16 PM (9 years ago)
- Location:
- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory
- Files:
-
- 3 edited
-
bin/import-plugin-to-glotpress.php (modified) (5 diffs)
-
cli/i18n/class-code-import.php (modified) (1 diff)
-
clients/class-slack.php (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/bin/import-plugin-to-glotpress.php
r5435 r5446 1 1 <?php 2 2 namespace WordPressdotorg\Plugin_Directory; 3 4 use Exception; 5 use WordPressdotorg\Plugin_Directory\Clients\Slack; 3 6 4 7 // This script should only be called in a CLI environment. … … 7 10 } 8 11 9 $opts = getopt( '', array( 'url:', 'abspath:', 'plugin:', 'tag:', 'type:' ) );12 $opts = getopt( '', array( 'url:', 'abspath:', 'plugin:', 'tag:', 'type:', 'no-slack' ) ); 10 13 11 14 // Guess the default parameters: … … 30 33 } 31 34 35 if ( ! in_array( $opts['type'], [ 'code', 'readme' ] ) ) { 36 fwrite( STDERR, "Invalid value for type argument: {$opts['type']}\n" ); 37 die(); 38 } 39 32 40 // Bootstrap WordPress 33 41 $_SERVER['HTTP_HOST'] = parse_url( $opts['url'], PHP_URL_HOST ); … … 50 58 $start_time = microtime( 1 ); 51 59 60 $plugin = Plugin_Directory::get_plugin_post( $plugin_slug ); 61 if ( ! $plugin ) { 62 fwrite( STDERR, "[{$plugin_slug}] Plugin I18N Import Failed: Plugin doesn't exist.\n" ); 63 exit( 1 ); 64 } 65 66 // Prepare Slack notification. 67 $send_slack = defined( 'PLUGIN_IMPORTS_SLACK_WEBHOOK' ) && ! isset( $opts['no-slack'] ); 68 if ( $send_slack ) { 69 $slack_client = new Slack( PLUGIN_IMPORTS_SLACK_WEBHOOK ); 70 $slack_client->add_attachment( 'ts', time() ); 71 $slack_client->add_attachment( 'fallback', "{$plugin->post_title} has been imported." ); 72 $slack_client->add_attachment( 'title', "{$plugin->post_title} has been imported" ); 73 $slack_client->add_attachment( 'title_link', "https://translate.wordpress.org/projects/wp-plugins/{$plugin_slug}" ); 74 $fields = [ 75 [ 76 'title' => 'Type', 77 'value' => ( 'readme' === $type ) ? 'Readme' : 'Code', 78 'short' => true, 79 ], 80 [ 81 'title' => 'Version', 82 'value' => $tag, 83 'short' => true, 84 ], 85 ]; 86 } 87 52 88 echo "Processing I18N Import for $plugin_slug...\n"; 53 89 try { … … 60 96 } 61 97 62 echo "OK. Took " . round( microtime(1) - $start_time, 2 ) . "s\n"; 63 } catch( \Exception $e ) { 64 echo "Failed. Took " . round( microtime(1) - $start_time, 2 ) . "s\n"; 98 $runtime = round( microtime( 1 ) - $start_time, 2 ); 99 100 // Send Slack notification. 101 if ( $send_slack ) { 102 $fields[] = [ 103 'title' => 'Status', 104 'value' => sprintf( '%s Successfully imported! (%ss)', $slack_client->get_success_emoji(), $runtime ), 105 'short' => false, 106 ]; 107 $fields[] = [ 108 'title' => 'Plugin', 109 'value' => sprintf( 110 '<%1$s|%2$s> | <https://plugins.trac.wordpress.org/log/%3$s|Log> | <%4$s|SVN>', 111 get_permalink( $plugin ), 112 $plugin->post_title, 113 $plugin_slug, 114 $importer->get_plugin_svn_url( $tag ) 115 ), 116 'short' => false, 117 ]; 118 $slack_client->add_attachment( 'fields', $fields ); 119 $slack_client->set_status( 'success' ); 120 $slack_client->send( '#meta-language-packs' ); 121 } 122 123 echo "OK. Took {$runtime}s\n"; 124 } catch ( Exception $e ) { 125 $runtime = round( microtime( 1 ) - $start_time, 2 ); 126 127 // Send Slack notification. 128 if ( $send_slack ) { 129 $fields[] = [ 130 'title' => 'Status', 131 'value' => sprintf( '%s %s (%ss)', $slack_client->get_failure_emoji(), $e->getMessage(), $runtime ), 132 'short' => false, 133 ]; 134 $fields[] = [ 135 'title' => 'Plugin', 136 'value' => sprintf( 137 '<%1$s|%2$s> | <https://plugins.trac.wordpress.org/log/%3$s|Log> | <%4$s|SVN>', 138 get_permalink( $plugin ), 139 $plugin->post_title, 140 $plugin_slug, 141 $importer->get_plugin_svn_url( $tag ) 142 ), 143 'short' => false, 144 ]; 145 $slack_client->add_attachment( 'fields', $fields ); 146 $slack_client->set_status( 'failure' ); 147 $slack_client->send( '#meta-language-packs' ); 148 } 149 150 echo "Failed. Took {$runtime}s\n"; 65 151 66 152 fwrite( STDERR, "[{$plugin_slug}] Plugin I18N Import Failed: " . $e->getMessage() . "\n" ); 67 exit( 1);153 exit( 2 ); 68 154 } -
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/i18n/class-code-import.php
r5444 r5446 50 50 $makepot = new \MakePOT; 51 51 52 if ( $makepot->wp_plugin( $export_directory, $pot_file, $this->plugin ) || ! file_exists( $pot_file ) ) {52 if ( ! $makepot->wp_plugin( $export_directory, $pot_file, $this->plugin ) || ! file_exists( $pot_file ) ) { 53 53 throw new Exception( "POT file couldn't be created." ); 54 54 } -
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/clients/class-slack.php
r4223 r5446 21 21 * @var array 22 22 */ 23 private $attachment = array();23 private $attachment = []; 24 24 25 25 /** … … 28 28 * @var array 29 29 */ 30 private $text = array(); 30 private $text = []; 31 32 /** 33 * Holds Emoji codes for success. 34 * 35 * @var array 36 */ 37 private $success_emoji = [ 38 ':green_heart:', ':white_check_mark:', ':smiley:', ':ok: ', 39 ]; 40 41 /** 42 * Holds Emoji codes for failure. 43 * 44 * @var array 45 */ 46 private $failure_emoji = [ 47 ':broken_heart:', ':umbrella_with_rain_drops:', ':cry:', ':sos:', 48 ]; 31 49 32 50 /** … … 63 81 * 64 82 * @param string $key Key of the attachment property. 65 * @param string$value Value of the attachment property.83 * @param mixed $value Value of the attachment property. 66 84 */ 67 85 public function add_attachment( $key, $value ) { … … 98 116 99 117 /** 118 * Returns a random emoji for a failure message. 119 * 120 * @return string Emoji code. 121 */ 122 public function get_failure_emoji() { 123 $index = array_rand( $this->failure_emoji, 1 ); 124 return $this->failure_emoji[ $index ]; 125 } 126 127 /** 128 * Returns a random emoji for a success message. 129 * 130 * @return string Emoji code. 131 */ 132 public function get_success_emoji() { 133 $index = array_rand( $this->success_emoji, 1 ); 134 return $this->success_emoji[ $index ]; 135 } 136 137 /** 100 138 * Publishes a Slack notifcation to a channel. 101 139 * … … 105 143 public function send( $channel ) { 106 144 $text = $this->get_text(); 107 if ( empty( $text ) ) {108 return false;145 if ( ! empty( $text ) ) { 146 $this->add_attachment( 'text', $text ); 109 147 } 110 148 111 $this->add_attachment( 'text', $text ); 112 $this->add_attachment( 'mrkdwn_in', array( 'text' ) ); 149 $this->add_attachment( 'mrkdwn_in', [ 'text', 'fields' ] ); 113 150 114 $payload = array(151 $payload = [ 115 152 'icon_emoji' => ':wordpress:', 116 153 'username' => 'Plugin Imports', 117 154 'channel' => $channel, 118 155 'attachments' => $this->get_attachments(), 119 );156 ]; 120 157 121 158 $payload = json_encode( $payload ); 122 159 $content = http_build_query( compact( 'payload' ) ); 123 160 124 $context = stream_context_create( array(125 'http' => array(161 $context = stream_context_create( [ 162 'http' => [ 126 163 'method' => 'POST', 127 164 'header' => 'Content-Type: application/x-www-form-urlencoded' . PHP_EOL, 128 165 'content' => $content, 129 ),130 ));166 ], 167 ] ); 131 168 132 169 $this->flush(); … … 139 176 */ 140 177 public function flush() { 141 $this->text = array();142 $this->attachment = array();178 $this->text = []; 179 $this->attachment = []; 143 180 } 144 181 }
Note: See TracChangeset
for help on using the changeset viewer.