| Crates.io | hive-asar |
| lib.rs | hive-asar |
| version | 0.4.0 |
| created_at | 2022-06-08 06:03:08.232604+00 |
| updated_at | 2022-07-19 10:27:43.305097+00 |
| description | Asynchronous parser and writer for Electron's asar archive format. |
| homepage | |
| repository | https://github.com/hack3ric/hive-asar |
| max_upload_size | |
| id | 601879 |
| size | 37,144 |
Asynchronous parser and writer for Electron's asar archive format.
Requires Tokio 1.x runtime.
Currently supported:
Currently not supported:
executable (not planned, it is up to you whether use it or not)use hive_asar::{Archive, FileArchive};
use tokio::io::AsyncReadExt;
#[tokio::main]
async fn main() -> tokio::io::Result<()> {
// Parses an asar archive from a file
let mut file_archive = Archive::new_from_file("path/to/archive.asar").await?;
// Gets the file, retrieving its metadata and reading the entire content
let mut file = file_archive.read("path/to/file.txt").await?;
let size = file.metadata().size;
let mut buf = Vec::with_capacity(size as _);
file.read_to_end(&mut buf).await?;
Ok(())
}
use hive_asar::{Writer, pack_dir};
use tokio::io::AsyncReadExt;
use tokio::fs::File;
#[tokio::main]
async fn main() -> tokio::io::Result<()> {
let mut writer = Writer::new();
// You can manually add all of the file one by one
writer.add_sized("foo.txt", File::open("folder/foo.txt").await?).await?;
writer.add_sized("bar.toml", File::open("folder/bar.toml").await?).await?;
writer.add_sized("baaz.rs", File::open("folder/baaz.rs").await?).await?;
writer.write(File::create("dest.asar").await?).await?;
// Or use `pack_dir` to pack a directory's content conveniently
pack_dir("folder", &mut File::create("dest.asar").await?).await?;
Ok(())
}
fs: (enabled by default) File system support, e.g. Archive::extract and pack_dir.integrity: (enabled by default) Enables SHA256 hash support in header. Uses sha2 crate.hive-asar is licensed under the MIT License.