extern crate hpkg;
use std::{env, process};
use hpkg::package_writer::PackageWriter;
use hpkg::hpkg_common::B_HPKG_COMPRESSION_ZSTD;
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() != 2 {
eprintln!("usage: hpkg_write <output.hpkg>");
eprintln!();
eprintln!("Creates a sample HPKG archive with inline data for testing.");
process::exit(1);
}
let output = &args[1];
let mut writer = PackageWriter::new(output);
writer.set_name("example_package")
.set_summary("An example HPKG archive created by hpkg-rs")
.set_vendor("hpkg-rs Project")
.set_architecture(4) .set_url("https://codeberg.org/kallisti5/hpkg-rs")
.set_compression(B_HPKG_COMPRESSION_ZSTD);
writer.add_file("bin/hello", b"#!/bin/sh\necho Hello from Haiku!\n");
writer.add_file("data/readme.txt", b"This is a test package created with hpkg-rs.\n");
writer.add_directory("data/subdir");
writer.add_directory("bin");
writer.add_symlink("bin/hi", "hello");
writer.finish().unwrap_or_else(|e| {
eprintln!("Error writing HPKG: {}", e);
process::exit(1);
});
println!("Created {}", output);
}