blob: bc6b750669e310d88a5a71ad69c78bd590cbb7e8 [file] [log] [blame]
/**
* node-archiver
*
* Copyright (c) 2012-2014 Chris Talkington, contributors.
* Licensed under the MIT license.
* https://github.com/ctalkington/node-archiver/blob/master/LICENSE-MIT
*/
var ArchiverCore = require('./modules/core');
var formatModules = {};
var archiver = module.exports = function(format, options) {
return archiver.create(format, options);
};
archiver.create = function(format, options) {
if (formatModules[format]) {
var inst = new ArchiverCore(options);
inst.setModule(new formatModules[format](options));
return inst;
} else {
throw new Error('unknown format: ' + format);
}
};
archiver.registerFormat = function(format, module) {
if (module && typeof module === 'function' && typeof module.prototype.append === 'function') {
formatModules[format] = module;
// backwards compat
var compatName = 'create' + format.charAt(0).toUpperCase() + format.slice(1);
archiver[compatName] = function(options) {
return archiver.create(format, options);
};
} else {
throw new Error('format module invalid: ' + format);
}
};
archiver.registerFormat('zip', require('./modules/zip'));
archiver.registerFormat('tar', require('./modules/tar'));
archiver.registerFormat('json', require('./modules/json'));