MediaWiki  master
cdb.php
Go to the documentation of this file.
1 <?php
26 use Cdb\Reader as CdbReader;
27 
28 require_once __DIR__ . '/commandLine.inc';
29 
30 function cdbShowHelp( $command ) {
31  $commandList = [
32  'load' => 'load a cdb file for reading',
33  'get' => 'get a value for a key',
34  'exit' => 'exit cdb',
35  'quit' => 'exit cdb',
36  'help' => 'help about a command',
37  ];
38  if ( !$command ) {
39  $command = 'fullhelp';
40  }
41  if ( $command === 'fullhelp' ) {
42  $max_cmd_len = max( array_map( 'strlen', array_keys( $commandList ) ) );
43  foreach ( $commandList as $cmd => $desc ) {
44  printf( "%-{$max_cmd_len}s: %s\n", $cmd, $desc );
45  }
46  } elseif ( isset( $commandList[$command] ) ) {
47  print "$command: $commandList[$command]\n";
48  } else {
49  print "$command: command does not exist or no help for it\n";
50  }
51 }
52 
53 do {
54  $bad = false;
55  $showhelp = false;
56  $quit = false;
57  static $fileHandle = false;
58 
60  if ( $line === false ) {
61  exit;
62  }
63 
64  $args = explode( ' ', $line, 2 );
65  $command = array_shift( $args );
66 
67  // process command
68  switch ( $command ) {
69  case 'help':
70  // show an help message
71  cdbShowHelp( array_shift( $args ) );
72  break;
73  case 'load':
74  if ( !isset( $args[0] ) ) {
75  print "Need a filename there buddy\n";
76  break;
77  }
78  $file = $args[0];
79  print "Loading cdb file $file...";
80  try {
81  $fileHandle = CdbReader::open( $file );
82  } catch ( CdbException $e ) {
83  }
84 
85  if ( !$fileHandle ) {
86  print "not a cdb file or unable to read it\n";
87  } else {
88  print "ok\n";
89  }
90  break;
91  case 'get':
92  if ( !$fileHandle ) {
93  print "Need to load a cdb file first\n";
94  break;
95  }
96  if ( !isset( $args[0] ) ) {
97  print "Need to specify a key, Luke\n";
98  break;
99  }
100  try {
101  $res = $fileHandle->get( $args[0] );
102  } catch ( CdbException $e ) {
103  print "Unable to read key from file\n";
104  break;
105  }
106  if ( $res === false ) {
107  print "No such key/value pair\n";
108  } elseif ( is_string( $res ) ) {
109  print "$res\n";
110  } else {
111  var_dump( $res );
112  }
113  break;
114  case 'quit':
115  case 'exit':
116  $quit = true;
117  break;
118 
119  default:
120  $bad = true;
121  } // switch() end
122 
123  if ( $bad ) {
124  if ( $command ) {
125  print "Bad command\n";
126  }
127  } else {
128  if ( function_exists( 'readline_add_history' ) ) {
129  readline_add_history( $line );
130  }
131  }
132 } while ( !$quit );
if(PHP_SAPI !='cli-server') if(!isset( $_SERVER['SCRIPT_FILENAME'])) $file
Item class for a filearchive table row.
Definition: router.php:42
$command
Definition: cdb.php:65
static readconsole( $prompt='> ')
Prompt the console for input.
cdbShowHelp( $command)
Definition: cdb.php:30
$showhelp
Definition: cdb.php:55
if( $line===false) $args
Definition: cdb.php:64
$quit
Definition: cdb.php:56
$line
Definition: cdb.php:59
static $fileHandle
Definition: cdb.php:57