///|
async fn main {
  let args = @env.args()
  guard args.length() >= 5 else {
    fail("usage: source-select FILE EXISTING_PARENT NEW_NAME ID...")
  }
  let opened = @host.open_seekable_file(args[1])
  defer opened.close()
  let ids = args[4:].map(id => @string.parse_int(id))
  let requests = ids.map(id => {
    @archive.RangeRequest::new(id, offset=0, length=0)
  })
  let reader = opened.archive.reader(cache_bytes=0)
  let previews = reader.read_ranges(requests[:])
  assert_true(previews.all(bytes => bytes.is_empty()))
  let exported = @host.export_source_selected(
    opened.archive,
    ids[:],
    parent=args[2],
    name=args[3],
  )
  println(
    "Exported \{exported.entries.length()} selected files after checking their folders; unselected folders were not verified",
  )
}