firmament-vita
Version:
Firmament module for automating VITA tasks
181 lines • 7.63 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
Object.defineProperty(exports, "__esModule", { value: true });
var inversify_1 = require("inversify");
var firmament_yargs_1 = require("firmament-yargs");
var fs = require('fs');
var find = require('find');
var path = require('path');
var async = require('async');
var mkdirp = require('mkdirp');
var VitaFileUtilImpl = (function (_super) {
__extends(VitaFileUtilImpl, _super);
function VitaFileUtilImpl(vitaSpawn, commandUtil) {
var _this = _super.call(this) || this;
_this.vitaSpawn = vitaSpawn;
_this.commandUtil = commandUtil;
return _this;
}
VitaFileUtilImpl.prototype.findFilesSync = function (options) {
try {
options.pattern = options.pattern || /.*/;
options.files = options.files || [];
options.folders = options.folders || [process.cwd()];
options.folders.forEach(function (folder) {
try {
options.files = options.files.concat(find.fileSync(options.pattern, folder));
}
catch (err) {
}
});
}
catch (err) {
}
return options.files;
};
VitaFileUtilImpl.prototype.findFiles = function (options, cb) {
this.checkCallback(cb)(null, this.findFilesSync(options));
};
VitaFileUtilImpl.prototype.unZipFiles = function (options, cbStatus, cbFinal) {
var _this = this;
cbStatus = this.checkCallback(cbStatus);
cbFinal = this.checkCallback(cbFinal);
options.deleteOriginalZipFile = options.deleteOriginalZipFile || false;
options.zippedFiles = options.zippedFiles || [];
options.targetFolder = options.targetFolder || '';
options.foldersOfZippedFiles = options.foldersOfZippedFiles || [];
options.zippedFiles = this.findFilesSync({
pattern: /\.gz$/,
files: options.zippedFiles,
folders: options.foldersOfZippedFiles
});
if (options.targetFolder) {
try {
mkdirp.sync(options.targetFolder);
}
catch (err) {
cbFinal(err);
return;
}
}
var fnArray = [];
options.zippedFiles.forEach(function (inFile) {
var outFile = inFile.slice(0, -3);
if (options.targetFolder) {
outFile = path.resolve(options.targetFolder, path.basename(outFile));
}
fnArray.push(async.apply(_this.spawnUnZipOperation.bind(_this), inFile, outFile, options.deleteOriginalZipFile, cbStatus));
});
async.parallelLimit(fnArray, 3, function (err, results) {
cbFinal(err, results);
});
};
VitaFileUtilImpl.prototype.deleteFile = function (file) {
fs.unlink(file);
};
VitaFileUtilImpl.prototype.deleteFiles = function (files) {
var _this = this;
files.forEach(function (file) {
try {
_this.deleteFile(file);
_this.commandUtil.log("Deleting: " + file);
}
catch (err) {
_this.commandUtil.error(err.toString());
}
});
};
VitaFileUtilImpl.prototype.copyFile = function (inFile, outFile, cb) {
var rd = fs.createReadStream(inFile);
rd.on("error", function (err) {
done(err);
});
var wr = fs.createWriteStream(outFile);
wr.on("error", function (err) {
done(err);
});
wr.on("close", function (err) {
done(err);
});
rd.pipe(wr);
function done(err) {
if (cb) {
cb(null, { error: err, inFile: inFile, outFile: outFile });
cb = null;
}
}
};
VitaFileUtilImpl.prototype.spawnUnZipOperation = function (inFile, outFile, deleteZipFile, cbStatus, cbFinal) {
var _this = this;
var testResult = '';
this.vitaSpawn.spawnIt('gunzip', ['--test', inFile], function (err, result) {
}, function (err, result) {
if (err) {
cbFinal(null, { error: err, zippedFilePath: inFile });
return;
}
var listResult = '';
_this.vitaSpawn.spawnIt('gunzip', ['--list', inFile], function (err, result) {
listResult += result.toString();
}, function (err, result) {
if (err) {
cbFinal(null, { error: err, zippedFilePath: inFile });
return;
}
var re = /(\d+)/g;
var r = re.exec(listResult);
var totalBytes = parseInt(r[1]);
var bytesWritten = 0;
var writeFileStream = fs.createWriteStream(outFile);
_this.vitaSpawn.spawnIt('gunzip', ['--stdout', inFile], function (err, result) {
bytesWritten += result.length;
var taskName = "UnZipping " + path.basename(outFile);
var current = bytesWritten;
var total = totalBytes;
cbStatus(null, { taskName: taskName, current: current, total: total });
writeFileStream.write(result);
}, function (err, result) {
writeFileStream.close();
if (err) {
cbFinal(null, { error: err, zippedFilePath: inFile });
return;
}
if (deleteZipFile) {
_this.deleteFile(inFile);
}
cbFinal(err, { unzippedFilePath: outFile, zippedFilePath: inFile });
});
});
});
};
VitaFileUtilImpl = __decorate([
inversify_1.injectable(),
__param(0, inversify_1.inject('VitaSpawn')),
__param(1, inversify_1.inject('CommandUtil')),
__metadata("design:paramtypes", [Object, Object])
], VitaFileUtilImpl);
return VitaFileUtilImpl;
}(firmament_yargs_1.ForceErrorImpl));
exports.VitaFileUtilImpl = VitaFileUtilImpl;
//# sourceMappingURL=vita-file-util-impl.js.map