diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2011-12-03 13:29:22 +0100 |
---|---|---|
committer | Pierre Schmitz <pierre@archlinux.de> | 2011-12-03 13:29:22 +0100 |
commit | ca32f08966f1b51fcb19460f0996bb0c4048e6fe (patch) | |
tree | ec04cc15b867bc21eedca904cea9af0254531a11 /maintenance/cdb.php | |
parent | a22fbfc60f36f5f7ee10d5ae6fe347340c2ee67c (diff) |
Update to MediaWiki 1.18.0
* also update ArchLinux skin to chagnes in MonoBook
* Use only css to hide our menu bar when printing
Diffstat (limited to 'maintenance/cdb.php')
-rw-r--r-- | maintenance/cdb.php | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/maintenance/cdb.php b/maintenance/cdb.php new file mode 100644 index 00000000..270f7a60 --- /dev/null +++ b/maintenance/cdb.php @@ -0,0 +1,119 @@ +<?php +/** + * cdb inspector tool + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + * @todo document + * @ingroup Maintenance + */ + +/** */ +require_once( dirname( __FILE__ ) . '/commandLine.inc' ); + +function cdbShowHelp( $command ) { + $commandList = array( + 'load' => 'load a cdb file for reading', + 'get' => 'get a value for a key', + 'exit' => 'exit cdb', + 'quit' => 'exit cdb', + '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 ); + } + } elseif ( isset( $commandList[$command] ) ) { + print "$command: $commandList[$command]\n"; + } else { + print "$command: command does not exist or no help for it\n"; + } +} + +do { + $bad = false; + $showhelp = false; + $quit = false; + static $fileHandle; + + $line = Maintenance::readconsole(); + if ( $line === false ) exit; + + $args = explode( ' ', $line ); + $command = array_shift( $args ); + + // process command + switch ( $command ) { + case 'help': + // show an help message + cdbShowHelp( array_shift( $args ) ); + break; + case 'load': + if( !isset( $args[0] ) ) { + print "Need a filename there buddy\n"; + break; + } + $file = $args[0]; + print "Loading cdb file $file..."; + $fileHandle = CdbReader::open( $file ); + if( !$fileHandle ) { + print "not a cdb file or unable to read it\n"; + } else { + print "ok\n"; + } + break; + case 'get': + if( !$fileHandle ) { + print "Need to load a cdb file first\n"; + break; + } + if( !isset( $args[0] ) ) { + print "Need to specify a key, Luke\n"; + break; + } + $res = $fileHandle->get( $args[0] ); + if ( $res === false ) { + print "No such key/value pair\n"; + } elseif ( is_string( $res ) ) { + print "$res\n"; + } else { + var_dump( $res ); + } + break; + case 'quit': + case 'exit': + $quit = true; + break; + + default: + $bad = true; + } // switch() end + + if ( $bad ) { + if ( $command ) { + print "Bad command\n"; + } + } else { + if ( function_exists( 'readline_add_history' ) ) { + readline_add_history( $line ); + } + } +} while ( !$quit ); |