function parse_command_line()

in perftest/jscrund.js [89:244]


function parse_command_line(options) {
  var i, val, values, pair, m, n;
  for(i = 2; i < process.argv.length ; i++) {
    val = process.argv[i];
    switch (val) {
    case '--help':
    case '-h':
      options.exit = true;
      break;
    case '-A':
      options.doClass = "A";
      break;
    case '-B':
      options.doClass = "B";
      break;
    case '-n':
      options.adapter = "ndb";
      break;
    case '-m':
      options.adapter = "mysql";
      break;
    case '-f':
      options.adapter = "sql";
      break;
    case '-i':
      var iterList = process.argv[++i];
      options.iterations = iterList.split('\,');
      for(m = 0 ; m < options.iterations.length; ++m) {
        n = options.iterations[m]
        if (isNaN(n)) {
          console.log('iterations value ',n,' is not allowed');
          options.exit = true;
        }
      }
      break;
    case '-r':
      options.nRuns = parseInt(process.argv[++i]);
      if (isNaN(options.nRuns)) {
        console.log('runs value is not allowed:', process.argv[i]);
        options.exit = true;
      }
      break;
    case '-E':
      options.deployment = process.argv[++i];
      break;
    case '--stats':
      options.stats = true;
      break;
    case '--debug':
    case '-d':
      JSCRUND.unified_debug.on();
      JSCRUND.unified_debug.level_debug();
      options.printStackTraces = true;
      break;
    case '--detail':
      JSCRUND.unified_debug.on();
      JSCRUND.unified_debug.level_detail();
      options.printStackTraces = true;
      break;
    case '--trace':
    case '-t':
      options.printStackTraces = true;
      break;
    case '--log':
      options.log = true;
      break;
    case '--spi':
      options.spi = true;
      break;
    case '--set':
      i++;  // next argument
      pair = process.argv[i].split('=');
      if(pair.length === 2) {
        if(isFinite(parseInt(pair[1]))) {
          pair[1] = parseInt(pair[1])
        }
        if(DEBUG) JSCRUND.udebug.log("Setting global:", pair[0], "=", pair[1]);
        options.setProp[pair[0]] = pair[1];
      }
      else {
        console.log("Invalid --set option " + process.argv[i]);
        options.exit = true;
      }
      break;
    default:
      values = val.split('=');
      if (values.length === 2) {
        switch (values[0]) {
        case '--count':
          options.count = values[1];
          break;
        case '--adapter':
          options.adapter = values[1];
          break;
        case '--mode':
        case '--modes':
          options.modes = values[1];
          options.modeNames = options.modes.split('\,');
          // validate mode names
          for (m = 0; m < options.modeNames.length; ++m) {
            switch (options.modeNames[m]) {
            case 'indy':
            case 'each':
            case 'bulk':
              break;
            default:
              console.log('Invalid mode ' + options.modeNames[m]);
              options.exit = true;
            }
          }
          break;
        case '--test':
        case '--tests':
          options.tests = values[1];
          options.testNames = options.tests.split('\,');
          // validate test names
          for (var t = 0; t < options.testNames.length; ++t) {
            switch (options.testNames[t]) {
            case 'persist':
            case 'find':
            case 'remove':
            case 'setVarchar':
            case 'clearVarchar':
              break;
            default:
              console.log('Invalid test ' + options.testNames[t]);
              options.exit = true;
            }
          }
          break;
        case '-df':
          unified_debug.on();
          unified_debug.set_file_level(values[1], 5);
          break;
        case '--delay':
          var delays = values[1].split(',');
          options.delay_pre = delays[0];
          options.delay_post = delays[1];
          break;
        case '--varchar':
          options.B_varchar_size = values[1];
          break;
        case '--deployment':
          options.deployment = values[1];
          break;
        default:
          console.log('Invalid option ' + val);
          options.exit = true;
        }
      } else {
        console.log('Invalid option ' + val);
        options.exit = true;
     }
    }
  }
}