#archive #electron #read #write #reading #archives #apps

bin+lib asar

A crate to read and write asar archives, often used by Electron apps

2 unstable releases

Uses new Rust 2021

0.1.0 Jul 30, 2022
0.0.0 Jan 5, 2021
Download history 2/week @ 2022-04-24 2/week @ 2022-05-01 7/week @ 2022-05-08 17/week @ 2022-05-15 6/week @ 2022-05-22 8/week @ 2022-05-29 8/week @ 2022-06-05 2/week @ 2022-06-19 2/week @ 2022-07-03 2/week @ 2022-07-10 1/week @ 2022-07-17 10/week @ 2022-07-24 28/week @ 2022-07-31 58/week @ 2022-08-07

97 downloads per month
Used in electron_tasje

Apache-2.0 OR MIT

45KB
864 lines

asar

This crate allows for the parsing, reading, and writing of asar archives, often seen in Electron-based applications.

Examples

Listing the contents of an asar archive

use asar::{AsarReader, Header, Result};
use std::fs;

fn main() -> Result<()> {
	let asar_file = fs::read("archive.asar")?;
	let asar = AsarReader::new(&asar_file)?;

	println!("There are {} files in archive.asar", asar.files().len());
	for path in asar.files().keys() {
		println!("{}", path.display());
	}
	Ok(())
}

Reading a file from an asar archive

use asar::{AsarReader, Header, Result};
use std::{fs, path::PathBuf};

fn main() -> Result<()> {
	let asar_file = fs::read("archive.asar")?;
	let asar = AsarReader::new(&asar_file)?;

	let path = PathBuf::from("hello.txt");
	let file = asar.files().get(&path).unwrap();
	let contents = std::str::from_utf8(file.data()).unwrap();
	assert_eq!(contents, "Hello, World!");
	Ok(())
}

Writing a file to an asar archive

use asar::{AsarWriter, Result};
use std::fs::File;

fn main() -> Result<()> {
	let mut asar = AsarWriter::new();
	asar.write_file("hello.txt", b"Hello, World!", false)?;
	asar.finalize(File::create("archive.asar")?)?;
	Ok(())
}

Features

  • integrity: Enable integrity checks/calculation.
  • check-integrity-on-read: Enable integrity checks when reading an archive, failing if any integrity check fails.
  • write - Enable writing an asar archive. Enabled by default, also enables integrity.

License

asar is licensed under either the MIT license or the Apache License 2.0, at the choice of the user.

License: Apache-2.0 OR MIT

Dependencies

~12MB
~239K SLoC