@grnsft/if
Version:
Impact Framework
94 lines • 10.4 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addTemplateManifest = exports.initializeAndInstallLibs = exports.getOptionsFromArgs = void 0;
/* eslint-disable no-process-exit */
const path = __importStar(require("path"));
const fs = __importStar(require("fs/promises"));
const utils_1 = require("@grnsft/if-core/utils");
const npm_1 = require("./npm");
const load_1 = require("../../common/lib/load");
const config_1 = require("../config");
const { MissingManifestDependenciesError } = utils_1.ERRORS;
const { FAILURE_MESSAGE_DEPENDENCIES, FAILURE_MESSAGE, FAILURE_MESSAGE_TEMPLATE, } = config_1.STRINGS;
/**
* Gets the folder path of the manifest file, dependencies from manifest file and install argument from the given arguments.
*/
const getOptionsFromArgs = async (commandArgs) => {
const { manifest, install } = commandArgs;
const folderPath = path.dirname(manifest);
const loadedManifest = await (0, load_1.load)(manifest);
const rawManifest = loadedManifest.rawManifest;
const plugins = rawManifest?.initialize?.plugins || {};
const dependencies = rawManifest?.execution?.environment.dependencies || [];
if (!dependencies.length) {
throw new MissingManifestDependenciesError(FAILURE_MESSAGE_DEPENDENCIES);
}
const pathsWithVersion = (0, npm_1.extractPathsWithVersion)(plugins, dependencies);
return {
folderPath,
dependencies: pathsWithVersion,
install,
};
};
exports.getOptionsFromArgs = getOptionsFromArgs;
/**
* Creates folder if not exists, installs dependencies if required, update depenedencies.
*/
const initializeAndInstallLibs = async (options) => {
try {
const { folderPath, install, cwd, dependencies } = options;
const packageJsonPath = await (0, npm_1.initPackageJsonIfNotExists)(folderPath);
await (0, npm_1.updatePackageJsonProperties)(packageJsonPath, cwd);
if (install) {
await (0, npm_1.installDependencies)(folderPath, dependencies);
}
else {
await (0, npm_1.updatePackageJsonDependencies)(packageJsonPath, dependencies, cwd);
}
}
catch (error) {
console.log(FAILURE_MESSAGE);
process.exit(2);
}
};
exports.initializeAndInstallLibs = initializeAndInstallLibs;
/**
* Adds a manifest template to the folder where the if-env CLI command runs.
*/
const addTemplateManifest = async (destinationDir) => {
try {
const templateManifest = path.resolve(__dirname, '../config/env-template.yml');
const destinationPath = path.resolve(destinationDir, 'manifest.yml');
const data = await fs.readFile(templateManifest, 'utf-8');
await fs.writeFile(destinationPath, data, 'utf-8');
}
catch (error) {
console.log(FAILURE_MESSAGE_TEMPLATE);
process.exit(1);
}
};
exports.addTemplateManifest = addTemplateManifest;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pZi1lbnYvdXRpbC9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0NBQW9DO0FBQ3BDLDJDQUE2QjtBQUM3QixnREFBa0M7QUFDbEMsaURBQTZDO0FBRTdDLCtCQU1lO0FBQ2YsZ0RBQTJDO0FBRTNDLHNDQUFrQztBQUlsQyxNQUFNLEVBQUMsZ0NBQWdDLEVBQUMsR0FBRyxjQUFNLENBQUM7QUFDbEQsTUFBTSxFQUNKLDRCQUE0QixFQUM1QixlQUFlLEVBQ2Ysd0JBQXdCLEdBQ3pCLEdBQUcsZ0JBQU8sQ0FBQztBQUVaOztHQUVHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEVBQUUsV0FHeEMsRUFBRSxFQUFFO0lBQ0gsTUFBTSxFQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUMsR0FBRyxXQUFXLENBQUM7SUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUEsV0FBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxXQUFXLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsV0FBVyxFQUFFLFVBQVUsRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ3ZELE1BQU0sWUFBWSxHQUFHLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7SUFFNUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDeEIsTUFBTSxJQUFJLGdDQUFnQyxDQUFDLDRCQUE0QixDQUFDLENBQUM7S0FDMUU7SUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUEsNkJBQXVCLEVBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRXhFLE9BQU87UUFDTCxVQUFVO1FBQ1YsWUFBWSxFQUFFLGdCQUFnQjtRQUM5QixPQUFPO0tBQ1IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQXRCVyxRQUFBLGtCQUFrQixzQkFzQjdCO0FBRUY7O0dBRUc7QUFDSSxNQUFNLHdCQUF3QixHQUFHLEtBQUssRUFBRSxPQUEyQixFQUFFLEVBQUU7SUFDNUUsSUFBSTtRQUNGLE1BQU0sRUFBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUMsR0FBRyxPQUFPLENBQUM7UUFDekQsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFBLGdDQUEwQixFQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXJFLE1BQU0sSUFBQSxpQ0FBMkIsRUFBQyxlQUFlLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFeEQsSUFBSSxPQUFPLEVBQUU7WUFDWCxNQUFNLElBQUEseUJBQW1CLEVBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ3JEO2FBQU07WUFDTCxNQUFNLElBQUEsbUNBQTZCLEVBQUMsZUFBZSxFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztTQUN6RTtLQUNGO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDLENBQUM7QUFoQlcsUUFBQSx3QkFBd0IsNEJBZ0JuQztBQUVGOztHQUVHO0FBQ0ksTUFBTSxtQkFBbUIsR0FBRyxLQUFLLEVBQUUsY0FBc0IsRUFBRSxFQUFFO0lBQ2xFLElBQUk7UUFDRixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQ25DLFNBQVMsRUFDVCw0QkFBNEIsQ0FDN0IsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUxRCxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNwRDtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakI7QUFDSCxDQUFDLENBQUM7QUFmVyxRQUFBLG1CQUFtQix1QkFlOUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm9jZXNzLWV4aXQgKi9cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQge0VSUk9SU30gZnJvbSAnQGdybnNmdC9pZi1jb3JlL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgZXh0cmFjdFBhdGhzV2l0aFZlcnNpb24sXG4gIGluaXRQYWNrYWdlSnNvbklmTm90RXhpc3RzLFxuICBpbnN0YWxsRGVwZW5kZW5jaWVzLFxuICB1cGRhdGVQYWNrYWdlSnNvbkRlcGVuZGVuY2llcyxcbiAgdXBkYXRlUGFja2FnZUpzb25Qcm9wZXJ0aWVzLFxufSBmcm9tICcuL25wbSc7XG5pbXBvcnQge2xvYWR9IGZyb20gJy4uLy4uL2NvbW1vbi9saWIvbG9hZCc7XG5cbmltcG9ydCB7U1RSSU5HU30gZnJvbSAnLi4vY29uZmlnJztcblxuaW1wb3J0IHtFbnZpcm9ubWVudE9wdGlvbnN9IGZyb20gJy4uL3R5cGVzL2lmLWVudic7XG5cbmNvbnN0IHtNaXNzaW5nTWFuaWZlc3REZXBlbmRlbmNpZXNFcnJvcn0gPSBFUlJPUlM7XG5jb25zdCB7XG4gIEZBSUxVUkVfTUVTU0FHRV9ERVBFTkRFTkNJRVMsXG4gIEZBSUxVUkVfTUVTU0FHRSxcbiAgRkFJTFVSRV9NRVNTQUdFX1RFTVBMQVRFLFxufSA9IFNUUklOR1M7XG5cbi8qKlxuICogR2V0cyB0aGUgZm9sZGVyIHBhdGggb2YgdGhlIG1hbmlmZXN0IGZpbGUsIGRlcGVuZGVuY2llcyBmcm9tIG1hbmlmZXN0IGZpbGUgYW5kIGluc3RhbGwgYXJndW1lbnQgZnJvbSB0aGUgZ2l2ZW4gYXJndW1lbnRzLlxuICovXG5leHBvcnQgY29uc3QgZ2V0T3B0aW9uc0Zyb21BcmdzID0gYXN5bmMgKGNvbW1hbmRBcmdzOiB7XG4gIG1hbmlmZXN0OiBzdHJpbmc7XG4gIGluc3RhbGw6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG59KSA9PiB7XG4gIGNvbnN0IHttYW5pZmVzdCwgaW5zdGFsbH0gPSBjb21tYW5kQXJncztcbiAgY29uc3QgZm9sZGVyUGF0aCA9IHBhdGguZGlybmFtZShtYW5pZmVzdCk7XG4gIGNvbnN0IGxvYWRlZE1hbmlmZXN0ID0gYXdhaXQgbG9hZChtYW5pZmVzdCk7XG4gIGNvbnN0IHJhd01hbmlmZXN0ID0gbG9hZGVkTWFuaWZlc3QucmF3TWFuaWZlc3Q7XG4gIGNvbnN0IHBsdWdpbnMgPSByYXdNYW5pZmVzdD8uaW5pdGlhbGl6ZT8ucGx1Z2lucyB8fCB7fTtcbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmF3TWFuaWZlc3Q/LmV4ZWN1dGlvbj8uZW52aXJvbm1lbnQuZGVwZW5kZW5jaWVzIHx8IFtdO1xuXG4gIGlmICghZGVwZW5kZW5jaWVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBNaXNzaW5nTWFuaWZlc3REZXBlbmRlbmNpZXNFcnJvcihGQUlMVVJFX01FU1NBR0VfREVQRU5ERU5DSUVTKTtcbiAgfVxuXG4gIGNvbnN0IHBhdGhzV2l0aFZlcnNpb24gPSBleHRyYWN0UGF0aHNXaXRoVmVyc2lvbihwbHVnaW5zLCBkZXBlbmRlbmNpZXMpO1xuXG4gIHJldHVybiB7XG4gICAgZm9sZGVyUGF0aCxcbiAgICBkZXBlbmRlbmNpZXM6IHBhdGhzV2l0aFZlcnNpb24sXG4gICAgaW5zdGFsbCxcbiAgfTtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBmb2xkZXIgaWYgbm90IGV4aXN0cywgaW5zdGFsbHMgZGVwZW5kZW5jaWVzIGlmIHJlcXVpcmVkLCB1cGRhdGUgZGVwZW5lZGVuY2llcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGluaXRpYWxpemVBbmRJbnN0YWxsTGlicyA9IGFzeW5jIChvcHRpb25zOiBFbnZpcm9ubWVudE9wdGlvbnMpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7Zm9sZGVyUGF0aCwgaW5zdGFsbCwgY3dkLCBkZXBlbmRlbmNpZXN9ID0gb3B0aW9ucztcbiAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBhd2FpdCBpbml0UGFja2FnZUpzb25JZk5vdEV4aXN0cyhmb2xkZXJQYXRoKTtcblxuICAgIGF3YWl0IHVwZGF0ZVBhY2thZ2VKc29uUHJvcGVydGllcyhwYWNrYWdlSnNvblBhdGgsIGN3ZCk7XG5cbiAgICBpZiAoaW5zdGFsbCkge1xuICAgICAgYXdhaXQgaW5zdGFsbERlcGVuZGVuY2llcyhmb2xkZXJQYXRoLCBkZXBlbmRlbmNpZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB1cGRhdGVQYWNrYWdlSnNvbkRlcGVuZGVuY2llcyhwYWNrYWdlSnNvblBhdGgsIGRlcGVuZGVuY2llcywgY3dkKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5sb2coRkFJTFVSRV9NRVNTQUdFKTtcbiAgICBwcm9jZXNzLmV4aXQoMik7XG4gIH1cbn07XG5cbi8qKlxuICogQWRkcyBhIG1hbmlmZXN0IHRlbXBsYXRlIHRvIHRoZSBmb2xkZXIgd2hlcmUgdGhlIGlmLWVudiBDTEkgY29tbWFuZCBydW5zLlxuICovXG5leHBvcnQgY29uc3QgYWRkVGVtcGxhdGVNYW5pZmVzdCA9IGFzeW5jIChkZXN0aW5hdGlvbkRpcjogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdGVtcGxhdGVNYW5pZmVzdCA9IHBhdGgucmVzb2x2ZShcbiAgICAgIF9fZGlybmFtZSxcbiAgICAgICcuLi9jb25maWcvZW52LXRlbXBsYXRlLnltbCdcbiAgICApO1xuXG4gICAgY29uc3QgZGVzdGluYXRpb25QYXRoID0gcGF0aC5yZXNvbHZlKGRlc3RpbmF0aW9uRGlyLCAnbWFuaWZlc3QueW1sJyk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IGZzLnJlYWRGaWxlKHRlbXBsYXRlTWFuaWZlc3QsICd1dGYtOCcpO1xuXG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGRlc3RpbmF0aW9uUGF0aCwgZGF0YSwgJ3V0Zi04Jyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5sb2coRkFJTFVSRV9NRVNTQUdFX1RFTVBMQVRFKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn07XG4iXX0=