Siebrand has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/89129


Change subject: Update fuzzy.php to use Maintenance class
......................................................................

Update fuzzy.php to use Maintenance class

Change-Id: Iaf57e2c912466260abdc92ec62e038fb3dc2c68c
---
M scripts/fuzzy.php
1 file changed, 76 insertions(+), 51 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Translate 
refs/changes/29/89129/1

diff --git a/scripts/fuzzy.php b/scripts/fuzzy.php
index f42bc63..f29fe3f 100644
--- a/scripts/fuzzy.php
+++ b/scripts/fuzzy.php
@@ -4,59 +4,74 @@
  *
  * @file
  * @author Niklas Laxström
- * @copyright Copyright © 2007-2009, Niklas Laxström
+ * @author Siebrand Mazeland
+ * @copyright Copyright © 2007-2013, Niklas Laxström, Siebrand Mazeland
  * @license GPL-2.0+
  */
 
-/// @cond
+// Standard boilerplate to define $IP
+if ( getenv( 'MW_INSTALL_PATH' ) !== false ) {
+       $IP = getenv( 'MW_INSTALL_PATH' );
+} else {
+       $dir = __DIR__;
+       $IP = "$dir/../../..";
+}
+require_once "$IP/maintenance/Maintenance.php";
 
-require __DIR__ . '/cli.inc';
-
-# Override the memory limit for wfShellExec, 100 MB seems to be too little
+# Override the memory limit for wfShellExec, 100 MB appears to be too little
 $wgMaxShellMemory = 1024 * 200;
 
-function showUsage() {
-       STDERR( <<<EOT
-Fuzzy bot command line script
+class Fuzzy extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = 'Fuzzy bot command line script';
+               $this->addArg(
+                       'messages',
+                       'Messages to fuzzy' // How can this be an array of 
string?
+               );
+               $this->addOption(
+                       'really',
+                       'Really fuzzy, no dry-run'
+               );
+               $this->addOption(
+                       'skiplanguages',
+                       'Skip some languages (comma separated)',
+                       false, /*required*/
+                       true /*has arg*/
+               );
+               $this->addOption(
+                       'comment',
+                       'Comment for updating',
+                       false, /*required*/
+                       true /*has arg*/
+               );
+       }
 
-Usage: php fuzzy.php [options...] <messages>
+       public function execute() {
+               $bot = new FuzzyScript( $this->getArg( 'messages' ), $this );
 
-Options:
-  --really        Really fuzzy, no dry-run
-  --skiplanguages Skip some languages (comma separated)
-  --comment       Comment for updating
+               if ( $this->hasOption('skiplanguages' ) ) {
+                       $bot->skipLanguages = array_map(
+                               'trim',
+                               explode( ',', $this->getOption('skiplanguages' 
) )
+                       );
+               }
 
-EOT
-       );
-       exit( 1 );
+               $bot->comment = $this->getOption( 'comment' );
+               $bot->dryrun = !$this->hasOption( 'really' );
+               $bot->execute();
+       }
+
+       /**
+        * Public alternative for protected Maintenance::output() as we need to 
get
+        * messages from the ChangeSyncer class to the commandline.
+        * @param string $out The text to show to the user
+        * @param string $channel Unique identifier for the channel.
+        */
+       public function myOutput( $out, $channel = null ) {
+               $this->output( $out, $channel );
+       }
 }
-
-if ( isset( $options['help'] ) ) {
-       showUsage();
-}
-
-$bot = new FuzzyScript( $args );
-
-if ( isset( $options['skiplanguages'] ) ) {
-       $_skipLanguages = array();
-       $_skipLanguages = array_map( 'trim', explode( ',', 
$options['skiplanguages'] ) );
-       $bot->skipLanguages = $_skipLanguages;
-}
-if ( isset( $options['norc'] ) ) {
-       $cs->norc = true;
-}
-
-if ( isset( $options['comment'] ) ) {
-       $bot->comment = $options['comment'];
-}
-
-if ( isset( $options['really'] ) ) {
-       $bot->dryrun = false;
-}
-
-$bot->execute();
-
-/// @endcond
 
 /**
  * Class for marking translation fuzzy.
@@ -88,10 +103,17 @@
        public $skipLanguages = array();
 
        /**
-        * @param string[] $titles
+        * @var Fuzzy
         */
-       public function __construct( $titles ) {
+       public $caller;
+
+       /**
+        * @param string[] $titles
+        * @param Fuzzy $caller
+        */
+       public function __construct( $titles, Fuzzy $caller = null ) {
                $this->titles = $titles;
+               $this->caller = $caller;
                $this->allclear = true;
        }
 
@@ -102,7 +124,7 @@
 
                $msgs = $this->getPages();
                $count = count( $msgs );
-               STDOUT( "Found $count pages to update." );
+               $this->caller->myOutput( "Found $count pages to update." );
 
                foreach ( $msgs as $phpIsStupid ) {
                        list( $title, $text ) = $phpIsStupid;
@@ -174,22 +196,22 @@
        private function updateMessage( $title, $text, $dryrun, $comment = null 
) {
                global $wgTranslateDocumentationLanguageCode;
 
-               STDOUT( "Updating {$title->getPrefixedText()}... ", $title );
+               $this->caller->myOutput( "Updating 
{$title->getPrefixedText()}... ", $title );
                if ( !$title instanceof Title ) {
-                       STDOUT( "INVALID TITLE!", $title );
+                       $this->caller->myOutput( "INVALID TITLE!", $title );
 
                        return;
                }
 
                $items = explode( '/', $title->getText(), 2 );
                if ( isset( $items[1] ) && $items[1] === 
$wgTranslateDocumentationLanguageCode ) {
-                       STDOUT( "IGNORED!", $title );
+                       $this->caller->myOutput( "IGNORED!", $title );
 
                        return;
                }
 
                if ( $dryrun ) {
-                       STDOUT( "DRY RUN!", $title );
+                       $this->caller->myOutput( "DRY RUN!", $title );
 
                        return;
                }
@@ -205,6 +227,9 @@
                );
 
                $success = $status === true || ( is_object( $status ) && 
$status->isOK() );
-               STDOUT( $success ? 'OK' : 'FAILED', $title );
+               $this->caller->myOutput( $success ? 'OK' : 'FAILED', $title );
        }
 }
+
+$maintClass = 'Fuzzy';
+require_once RUN_MAINTENANCE_IF_MAIN;

-- 
To view, visit https://gerrit.wikimedia.org/r/89129
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iaf57e2c912466260abdc92ec62e038fb3dc2c68c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Translate
Gerrit-Branch: master
Gerrit-Owner: Siebrand <siebr...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to