ar-async

0.1.4 • Public • Published

ar

A Node library for asynchronously reading and writing Unix archive files. Currents supprts basic ar format, as well as BSD and GNU variants.

###ArReader

var ar = require('ar'),
    fs = require('fs'),
    path = require('path');

// extracts all of the files in "some_archive.a" to the folder "./output".
var outputDir = "./output";
if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir);

var reader = new ar.ArReader("some_archive.a");
reader.on("open", function() {
	// archive opened
});
reader.on("entry", function(entry, next) {
	// entry is an instance of ArEntry
	var name = entry.fileName();
	entry.fileData()
		.pipe(fs.createWriteStream(name))
		.on("finish", next);		
});
reader.on("error", function(err) {
	// archive reading error
});
reader.on("end", function() {
	// archive parsing ended
});
reader.on("close", function() {
	// archive closed
});

ArReader automatically detects and handles BSD and GNU variant formats. All events are optional, so you only have to listen for the ones you want.

###ArWriter

var ar = require('ar'),
    fs = require('fs'),
    path = require('path');

// write files into a new ar archive at "some_archive.a"
// in the case, specifies gnu variant format for long filenames
var writer = new ar.ArWriter("./some_archive.a", {variant:"gnu"});
writer.writeEntries([
		"./some_file",
		"./some_other_file",
		"./yet_another_file"
	], function() {
		// optional callback after completion
	});
writer.on("open", function() {
	// archive opened
});
writer.on("entry", function(entry) {
	// entry is an instance of ArEntry
	// signifies an entry has been written
	// unlike ArReader, there is no next function
});
writer.on("error", function(err) {
	// archive writing error
});
writer.on("finish", function() {
	// archive writing ended and closed
});

ArWriter by default will truncate filenames at 16 bytes long. For long file names, specify a variant format, like done above. Currently "GNU" and "BSD" are supported. Additionally, you can specify "uid", "gid", and "mode" number values in the options json; they will override the values for each file written. All events are optional, so you only have to listen for the ones you want.

###ArEntry See ar.js for inline ArEntry documention, but here are the key APIs

  • [ArEntry].fileName() - String - Filename of the file in the entry
  • [ArEntry].fileSize() - Number - Number of bytes the file takes up
  • [ArEntry].fileData() - Stream - Readable stream for file data
  • [ArEntry].date() - Date - Last modified date of the file
  • [ArEntry].uid() - Number - UID of the file
  • [ArEntry].gid() - Number - GID of the file
  • [ArEntry].mode() - Number - File mode

###License Licensed under the MIT License (MIT)

node-ar-async Copyright (c) 2014 Jason Robitaille. https://github.com/JayCanuck/node-ar-async

Based on, and including code from, from node-ar, Copyright (c) 2013 John Vilk. https://github.com/jvilk/node-ar

Readme

Keywords

Package Sidebar

Install

npm i ar-async

Weekly Downloads

12,682

Version

0.1.4

License

none

Last publish

Collaborators

  • jaycanuck