123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 'use strict';
-
- var compressions = require('../compressions');
- var ZipFileWorker = require('./ZipFileWorker');
-
-
- var getCompression = function (fileCompression, zipCompression) {
-
- var compressionName = fileCompression || zipCompression;
- var compression = compressions[compressionName];
- if (!compression) {
- throw new Error(compressionName + " is not a valid compression method !");
- }
- return compression;
- };
-
-
- exports.generateWorker = function (zip, options, comment) {
-
- var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);
- var entriesCount = 0;
- try {
-
- zip.forEach(function (relativePath, file) {
- entriesCount++;
- var compression = getCompression(file.options.compression, options.compression);
- var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};
- var dir = file.dir, date = file.date;
-
- file._compressWorker(compression, compressionOptions)
- .withStreamInfo("file", {
- name : relativePath,
- dir : dir,
- date : date,
- comment : file.comment || "",
- unixPermissions : file.unixPermissions,
- dosPermissions : file.dosPermissions
- })
- .pipe(zipFileWorker);
- });
- zipFileWorker.entriesCount = entriesCount;
- } catch (e) {
- zipFileWorker.error(e);
- }
-
- return zipFileWorker;
- };
|