///|
// Run from the repository root. No extraction or decompression happens here.
fn read_demo() -> Unit raise {
  let bytes = @fs.read_file_to_bytes("examples/data/demo.deb")
  let archive = match @ar.parse(bytes) {
    Ok(archive) => archive
    Err(error) =>
      fail("\{error.code} at byte \{error.offset}: \{error.message}")
  }
  let mut found_version = false
  for i = 0; i < archive.member_count(); i = i + 1 {
    let entry = archive.get_member(i).unwrap()
    if entry.kind != @ar.Regular {
      continue
    }
    println("\{Json(entry.name_text()).stringify()}: \{entry.size} bytes")
    if entry.name == b"debian-binary" {
      found_version = archive.member_bytes(i) == Some(b"2.0\n")
    }
  }
  guard found_version else { fail("expected the Debian 2.0 version marker") }
  println("Read the version marker through the public library API.")
}

///|
fn main {
  read_demo() catch {
    error => {
      eprintln(error)
      @sys.exit(1)
    }
  }
}