UNPKG

stryker

Version:
80 lines 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var util_1 = require("@stryker-mutator/util"); var path = require("path"); var mkdirp = require("mkdirp"); var log4js_1 = require("log4js"); var fileUtils_1 = require("./fileUtils"); var TempFolder = /** @class */ (function () { function TempFolder() { this.log = log4js_1.getLogger(TempFolder.name); } TempFolder.prototype.initialize = function (tempDirName) { if (tempDirName === void 0) { tempDirName = '.stryker-tmp'; } this.baseTempFolder = path.join(process.cwd(), tempDirName); this.tempFolder = path.join(this.baseTempFolder, this.random().toString()); mkdirp.sync(this.baseTempFolder); mkdirp.sync(this.tempFolder); }; /** * Creates a new random folder with the specified prefix. * @param prefix The prefix. * @returns The path to the folder. */ TempFolder.prototype.createRandomFolder = function (prefix) { if (!this.baseTempFolder) { throw new Error('initialize() was not called!'); } var dir = this.baseTempFolder + path.sep + prefix + this.random(); mkdirp.sync(dir); return dir; }; /** * Copies a file. * @param fromFilename The path to the existing file. * @param toFilename The path to copy the file to. * @param instrumenter An optional additional instrumenter to stream the file through * @returns A promise to eventually copy the file. */ TempFolder.prototype.copyFile = function (fromFilename, toFilename, instrumenter) { return new Promise(function (resolve, reject) { var readStream = util_1.fsAsPromised.createReadStream(fromFilename, { encoding: 'utf8' }); var writeStream = util_1.fsAsPromised.createWriteStream(toFilename); readStream.on('error', reject); writeStream.on('error', reject); if (instrumenter) { readStream = readStream.pipe(instrumenter); } readStream.pipe(writeStream); readStream.on('end', function () { return resolve(); }); }); }; /** * Deletes the Stryker-temp folder */ TempFolder.prototype.clean = function () { var _this = this; if (!this.baseTempFolder) { throw new Error('initialize() was not called!'); } this.log.debug("Deleting stryker temp folder " + this.baseTempFolder); return fileUtils_1.deleteDir(this.baseTempFolder) .catch(function () { return _this.log.info("Failed to delete stryker temp folder " + _this.baseTempFolder); }); }; /** * Creates a random integer number. * @returns A random integer. */ TempFolder.prototype.random = function () { return Math.ceil(Math.random() * 10000000); }; TempFolder.instance = function () { if (!this._instance) { this._instance = new TempFolder(); } return this._instance; }; return TempFolder; }()); exports.TempFolder = TempFolder; //# sourceMappingURL=TempFolder.js.map