mcc can now set memcached debug mode and has help
authorAntoine Musso <hashar@free.fr>
Wed, 16 Jan 2013 14:27:21 +0000 (15:27 +0100)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 17 Jan 2013 15:25:49 +0000 (15:25 +0000)
This patch let us set the debug mode on the memcached connection. Simply
pass --debug as an argument.  I have also added basic usage
documentation with --help, listing the interacting commands as well.

Example output:

$ php mcc.php --help
Usage:
mcc.php [--debug]
mcc.php --help

MemCached Command (mcc) is an interactive command tool that let you
interact
with the MediaWiki memcached cache.

Options:
--debug Set debug mode on the memcached connection.
--help  This help screen.

Interactive commands:
get    : grabs something
getsock: lists sockets
set    : changes something
delete : deletes something
history: show command line history
server : show current memcached server
dumpmcc: shows the whole thing
exit   : exit mcc
quit   : exit mcc
help   : help about a command

$

Change-Id: Ib4603eecbd6a8e6f3ba8bf3cf350c0e3df652d3b

maintenance/mcc.php

index 6090a93..4e0f291 100644 (file)
 /** */
 require_once( __DIR__ . '/commandLine.inc' );
 
-$mcc = new MWMemcached( array( 'persistent' => true ) );
+$debug = in_array( '--debug', $argv );
+$help = in_array( '--help', $argv );
+
+if( $help ) {
+       mccShowUsage();
+       exit( 0 );
+}
+$mcc = new MWMemcached( array(
+       'persistent' => true,
+       'debug' => $debug,
+) );
 
 if ( $wgMainCacheType === CACHE_MEMCACHED ) {
        $mcc->set_servers( $wgMemCachedServers );
@@ -36,7 +46,32 @@ if ( $wgMainCacheType === CACHE_MEMCACHED ) {
        exit( 1 );
 }
 
-function mccShowHelp( $command ) {
+/**
+ * Show this command line tool usage.
+ */
+function mccShowUsage() {
+       echo <<<EOF
+Usage:
+       mcc.php [--debug]
+       mcc.php --help
+
+MemCached Command (mcc) is an interactive command tool that let you interact
+with the MediaWiki memcached cache.
+
+Options:
+       --debug Set debug mode on the memcached connection.
+       --help  This help screen.
+
+Interactive commands:
+
+EOF;
+       print "\t";
+       print str_replace( "\n", "\n\t", mccGetHelp( false ) );
+       print "\n";
+}
+
+function mccGetHelp( $command ) {
+       $output = '';
        $commandList = array(
                'get' => 'grabs something',
                'getsock' => 'lists sockets',
@@ -55,13 +90,15 @@ function mccShowHelp( $command ) {
        if ( $command === 'fullhelp' ) {
                $max_cmd_len = max( array_map( 'strlen', array_keys( $commandList ) ) );
                foreach ( $commandList as $cmd => $desc ) {
-                       printf( "%-{$max_cmd_len}s: %s\n", $cmd, $desc );
+                       $output .= sprintf( "%-{$max_cmd_len}s: %s\n", $cmd, $desc );
                }
        } elseif ( isset( $commandList[$command] ) ) {
-               print "$command: $commandList[$command]\n";
+               $output .= "$command: $commandList[$command]\n";
        } else {
-               print "$command: command does not exist or no help for it\n";
+               $output .= "$command: command does not exist or no help for it\n";
        }
+
+       return $output;
 }
 
 do {
@@ -79,7 +116,7 @@ do {
        switch ( $command ) {
                case 'help':
                        // show an help message
-                       mccShowHelp( array_shift( $args ) );
+                       print mccGetHelp( array_shift( $args ) );
                        break;
 
                case 'get':