#![doc = include_str!("../README.md")]
mod compress;
mod params;
use crate::params::CompressParams;
use compress::compress_file_deflate;
use proc_macro::{Span, TokenStream};
use quote::quote;
use syn::LitByteStr;
#[proc_macro]
pub fn include_file_compress_deflate(input: TokenStream) -> TokenStream {
let params: CompressParams = match syn::parse(input) {
Ok(ok) => ok,
Err(err) => {
return err.into_compile_error().into();
}
};
let call_site = Span::call_site().into();
let compressed_data = match compress_file_deflate(params) {
Ok(ok) => ok,
Err(err) => {
return syn::Error::new(call_site, format_args!("Compress error: {}", err))
.into_compile_error()
.into();
}
};
let embed_bytes_len = compressed_data.len();
let embed_bytes = LitByteStr::new(&compressed_data, call_site);
let result = quote!({ #embed_bytes as (&'static [u8; #embed_bytes_len]) });
result.into()
}