* @ingroup Maintenance
*/
-/** */
-require_once( __DIR__ . '/commandLine.inc' );
-
-$mcc = new MWMemcached( array( 'persistent' => true ) );
-
-if ( $wgMainCacheType === CACHE_MEMCACHED ) {
+$optionsWithArgs = [ 'cache' ];
+$optionsWithoutArgs = [
+ 'debug', 'help'
+];
+require_once __DIR__ . '/commandLine.inc';
+
+$debug = isset( $options['debug'] );
+$help = isset( $options['help'] );
+$cache = isset( $options['cache'] ) ? $options['cache'] : null;
+
+if ( $help ) {
+ mccShowUsage();
+ exit( 0 );
+}
+$mcc = new MemcachedClient( [
+ 'persistent' => true,
+ 'debug' => $debug,
+] );
+
+if ( $cache ) {
+ if ( !isset( $wgObjectCaches[$cache] ) ) {
+ print "MediaWiki isn't configured with a cache named '$cache'";
+ exit( 1 );
+ }
+ $servers = $wgObjectCaches[$cache]['servers'];
+} elseif ( $wgMainCacheType === CACHE_MEMCACHED ) {
$mcc->set_servers( $wgMemCachedServers );
-} elseif( isset( $wgObjectCaches[$wgMainCacheType] ) ) {
+} elseif ( isset( $wgObjectCaches[$wgMainCacheType]['servers'] ) ) {
$mcc->set_servers( $wgObjectCaches[$wgMainCacheType]['servers'] );
} else {
print "MediaWiki isn't configured for Memcached usage\n";
exit( 1 );
}
-function mccShowHelp( $command ) {
- $commandList = array(
+/**
+ * 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 = [
'get' => 'grabs something',
'getsock' => 'lists sockets',
'set' => 'changes something',
'exit' => 'exit mcc',
'quit' => 'exit mcc',
'help' => 'help about a command',
- );
+ ];
if ( !$command ) {
$command = 'fullhelp';
}
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 {
$quit = false;
$line = Maintenance::readconsole();
- if ( $line === false ) exit;
+ if ( $line === false ) {
+ exit;
+ }
$args = explode( ' ', $line );
$command = array_shift( $args );
switch ( $command ) {
case 'help':
// show an help message
- mccShowHelp( array_shift( $args ) );
+ print mccGetHelp( array_shift( $args ) );
break;
case 'get':