use clap::Args;
use trueno_zram_core::zram::{format_size, parse_size, SysfsOps, ZramConfig, ZramOps};
#[derive(Args)]
pub struct CreateArgs {
#[arg(short, long, default_value = "0", value_parser = clap::value_parser!(u32).range(0..=16))]
pub device: u32,
#[arg(short, long)]
pub size: String,
#[arg(short, long, default_value = "lz4")]
pub algorithm: String,
#[arg(long, default_value = "0")]
pub streams: u32,
}
pub fn create(args: &CreateArgs) -> Result<(), Box<dyn std::error::Error>> {
let size_bytes = parse_size(&args.size)?;
let config = ZramConfig {
device: args.device,
size: size_bytes,
algorithm: args.algorithm.clone(),
streams: args.streams,
};
let ops = SysfsOps::new();
ops.create(&config)?;
println!(
"Created zram{} with size {} using {}",
args.device,
format_size(size_bytes),
args.algorithm
);
Ok(())
}