UNPKG

allure-js-commons

Version:
116 lines (115 loc) 3.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileSystemWriter = void 0; var _nodeCrypto = require("node:crypto"); var _nodeFs = require("node:fs"); var _nodePath = require("node:path"); var _envInfo = require("../utils/envInfo.js"); var writeJson = (path, data) => { writeFile(path, JSON.stringify(data), "utf-8"); }; var buildTempPath = path => { return (0, _nodePath.join)((0, _nodePath.dirname)(path), ".allure-write-".concat((0, _nodeCrypto.randomUUID)(), ".tmp")); }; var removeTempFile = path => { (0, _nodeFs.rmSync)(path, { force: true }); }; var tryRemoveTempFile = path => { try { removeTempFile(path); } catch (ignored) { void ignored; } }; var writeAndFlushFile = (path, write) => { var fd = (0, _nodeFs.openSync)(path, "w"); try { write(fd); (0, _nodeFs.fsyncSync)(fd); } finally { (0, _nodeFs.closeSync)(fd); } }; var publishFile = (path, writeTempFile) => { var tempPath = buildTempPath(path); try { writeTempFile(tempPath); (0, _nodeFs.renameSync)(tempPath, path); } catch (error) { tryRemoveTempFile(tempPath); throw error; } removeTempFile(tempPath); }; var writeFile = (path, data, encoding) => { publishFile(path, tempPath => { writeAndFlushFile(tempPath, fd => { (0, _nodeFs.writeFileSync)(fd, data, encoding); }); }); }; var copyFile = (from, to) => { publishFile(to, tempPath => { var fromFd = (0, _nodeFs.openSync)(from, "r"); try { writeAndFlushFile(tempPath, toFd => { var buffer = Buffer.allocUnsafe(64 * 1024); var bytesRead = 0; while ((bytesRead = (0, _nodeFs.readSync)(fromFd, buffer, 0, buffer.length, null)) > 0) { var bytesWritten = 0; while (bytesWritten < bytesRead) { bytesWritten += (0, _nodeFs.writeSync)(toFd, buffer, bytesWritten, bytesRead - bytesWritten); } } }); } finally { (0, _nodeFs.closeSync)(fromFd); } }); }; class FileSystemWriter { constructor(config) { this.config = config; } writeAttachment(distFileName, content) { var path = this.buildPath(distFileName); writeFile(path, content); } writeAttachmentFromPath(distFileName, from) { var to = this.buildPath(distFileName); copyFile(from, to); } writeEnvironmentInfo(info) { var text = (0, _envInfo.stringifyEnvInfo)(info); var path = this.buildPath("environment.properties"); writeFile(path, text); } writeCategoriesDefinitions(categories) { var path = this.buildPath("categories.json"); writeJson(path, categories); } writeGroup(result) { var path = this.buildPath("".concat(result.uuid, "-container.json")); writeJson(path, result); } writeResult(result) { var path = this.buildPath("".concat(result.uuid, "-result.json")); writeJson(path, result); } writeGlobals(distFileName, info) { var path = this.buildPath(distFileName); writeJson(path, info); } buildPath(name) { (0, _nodeFs.mkdirSync)(this.config.resultsDir, { recursive: true }); return (0, _nodePath.join)(this.config.resultsDir, name); } } exports.FileSystemWriter = FileSystemWriter; //# sourceMappingURL=FileSystemWriter.js.map