allure-js-commons
Version:
Allure JS Commons
116 lines (115 loc) • 3.26 kB
JavaScript
;
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