steadybit
Version:
Command-line interface to interact with the Steadybit API
84 lines • 3.93 kB
JavaScript
;
// SPDX-License-Identifier: MIT
// SPDX-FileCopyrightText: 2022 Steadybit GmbH
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveExperimentFiles = resolveExperimentFiles;
exports.writeYamlFile = writeYamlFile;
exports.loadExperiment = loadExperiment;
const promises_1 = __importDefault(require("fs/promises"));
const js_yaml_1 = __importDefault(require("js-yaml"));
const errors_1 = require("../errors");
const path_1 = __importDefault(require("path"));
function resolveExperimentFiles(files, recursive) {
return __awaiter(this, void 0, void 0, function* () {
const results = [];
for (const file of files) {
try {
const stat = yield promises_1.default.stat(file);
if (stat.isDirectory()) {
const subDirectories = [];
for (const entry of yield promises_1.default.readdir(file, { withFileTypes: true })) {
if (entry.isDirectory()) {
subDirectories.push(path_1.default.join(file, entry.name));
}
else if (entry.isFile() &&
(entry.name.toLowerCase().endsWith('.yaml') || entry.name.toLowerCase().endsWith('.yml'))) {
results.push(path_1.default.join(file, entry.name));
}
}
if (recursive && subDirectories.length > 0) {
results.push(...(yield resolveExperimentFiles(subDirectories, recursive)));
}
}
else {
results.push(file);
}
}
catch (e) {
if (e.code === 'ENOENT') {
throw (0, errors_1.abortExecution)(`File or directory '${file}' not found.`);
}
else {
throw e;
}
}
}
return results;
});
}
function writeYamlFile(file, content) {
return __awaiter(this, void 0, void 0, function* () {
yield promises_1.default.writeFile(file, js_yaml_1.default.dump(content), { encoding: 'utf8' });
});
}
function loadExperiment(file) {
return __awaiter(this, void 0, void 0, function* () {
var _a, _b;
let fileContent;
try {
fileContent = yield promises_1.default.readFile(file, { encoding: 'utf8' });
}
catch (e) {
throw (0, errors_1.abortExecution)("Failed to read experiment file at path '%s': %s", file, (_a = e === null || e === void 0 ? void 0 : e.message) !== null && _a !== void 0 ? _a : 'Unknown Cause');
}
try {
return js_yaml_1.default.load(fileContent);
}
catch (e) {
throw (0, errors_1.abortExecution)("Failed to parse experiment file at path '%s' as YAML/JSON: %s", file, (_b = e === null || e === void 0 ? void 0 : e.message) !== null && _b !== void 0 ? _b : 'Unknown Cause');
}
});
}
//# sourceMappingURL=files.js.map