mod ktx2_decode;
mod ktx2_encode;
mod pack;
use anyhow::Result;
use clap::Parser;
use std::path::PathBuf;
#[derive(Parser)]
#[command(name = "eulumdat-gltf-pack")]
#[command(about = "Pack a glTF with external KTX2 textures into a self-contained GLB")]
struct Cli {
input: PathBuf,
#[arg(short, long)]
output: PathBuf,
#[arg(long, default_value_t = 512)]
max_texture_size: u32,
#[arg(long, default_value_t = 75)]
jpeg_quality: u8,
#[arg(long)]
gpu_compress: bool,
#[arg(long, default_value_t = 2)]
uastc_quality: u32,
#[arg(long)]
rdo_quality: Option<f32>,
#[arg(long)]
mipmaps: bool,
#[arg(long)]
dry_run: bool,
}
fn main() -> Result<()> {
let cli = Cli::parse();
let opts = pack::PackOptions {
max_texture_size: cli.max_texture_size,
jpeg_quality: cli.jpeg_quality,
gpu_compress: cli.gpu_compress,
uastc_quality: cli.uastc_quality,
rdo_quality: cli.rdo_quality,
mipmaps: cli.mipmaps,
dry_run: cli.dry_run,
};
pack::pack_gltf(&cli.input, &cli.output, &opts)
}