added -p -c -l -o options to uw8 run command

This commit is contained in:
2021-11-26 23:45:29 +01:00
parent fcf24110c5
commit 0cb169d62e
11 changed files with 321 additions and 17 deletions

View File

@@ -195,7 +195,7 @@ impl BaseModule {
pub fn create_binary(path: &Path) -> Result<()> {
let base1 = BaseModule::for_format_version(1)?.to_wasm();
let data = upkr::pack(&base1);
let data = upkr::pack(&base1, 4, None);
File::create(path)?.write_all(&data)?;
Ok(())
}

View File

@@ -14,19 +14,24 @@ use wasmparser::{
};
pub struct PackConfig {
compression: bool,
compression: Option<u8>,
}
impl PackConfig {
pub fn with_compression(mut self) -> Self {
self.compression = true;
self.compression = Some(2);
self
}
pub fn with_compression_level(mut self, level: u8) -> Self {
self.compression = Some(level);
self
}
}
impl Default for PackConfig {
fn default() -> PackConfig {
PackConfig { compression: false }
PackConfig { compression: None }
}
}
@@ -46,9 +51,21 @@ pub fn pack(data: &[u8], config: PackConfig) -> Result<Vec<u8>> {
let parsed_module = ParsedModule::parse(data)?;
let result = parsed_module.pack(&base)?;
if config.compression {
if let Some(level) = config.compression {
let mut uw8 = vec![2];
uw8.extend_from_slice(&upkr::pack(&result[8..]));
let content = &result[8..];
let mut pb = pbr::ProgressBar::new(content.len() as u64);
pb.set_units(pbr::Units::Bytes);
uw8.extend_from_slice(&upkr::pack(
&result[8..],
level,
Some(&mut |pos| {
pb.set(pos as u64);
}),
));
pb.finish();
Ok(uw8)
} else {
let mut uw8 = vec![1];