///|
/// Runs a deterministic put/get workload for the repository benchmark scripts.
fn main {
  let argv = @env.args()
  if argv.length() < 3 {
    println("Usage: moon run --target native cmd/bench --  ")
    return
  }

  let dir = argv[1]
  let records = parse_count(argv[2])
  if records <= 0 {
    println("records must be greater than zero")
    return
  }

  try {
    let db = @moonkv.DB::open(dir, 64 * 1024 * 1024)
    for i in 0.. println("IO error: \{message}")
    @moonkv.MoonKVError::KeyNotFound(key) => println("missing key: \{key}")
    @moonkv.MoonKVError::CorruptedDatabase(message) =>
      println("corrupted database: \{message}")
    @moonkv.MoonKVError::InvalidRecord(message) =>
      println("invalid record: \{message}")
  }
}

///|
fn parse_count(s : String) -> Int {
  let mut value = 0
  for ch in s {
    if ch < '0' || ch > '9' {
      return 0
    }
    value = value * 10 + ch.to_int() - '0'.to_int()
  }
  value
}