acha-framework
Version:
is a modular framework on both client (angular.js) and server (node.js) side, it provides security, orm, ioc, obfuscation and ...
53 lines • 1.5 kB
JavaScript
(function (undefined) {
Ioc.define('backend.zipHelper', [], function (provide) {
var AdmZip = require('adm-zip');
var createZip = function (source) {
return Q.Promise(function (resolve, reject) {
var zip = new AdmZip();
var promises = [];
var errorHappend = false;
for (var i = 0; i < source.length; i++) {
var defer = Q.defer();
promises.push(defer.promise);
(function (defer, src, zip) {
FS.stat(src, function (err, stat) {
if (err) {
defer.resolve();
errorHappend = true;
return;
}
if (stat.isDirectory()) {
zip.addLocalFolder(src);
} else {
zip.addLocalFile(src);
}
defer.resolve();
});
}(defer, source[i], zip));
}
Q.all(promises).then(function () {
if (errorHappend)
zip = null;
resolve(zip);
});
});
};
provide({
createZip: createZip,
zip: function (source, destination) {
'use strict';
return Q.Promise(function (resolve, reject) {
createZip(source).then(function (zip) {
if (zip) {
zip.writeZip(destination);
zip = null;
resolve(true);
return;
}
resolve(false);
});
});
}
});
});
}());