UNPKG

@forestadmin/forest-cloud

Version:

Utility to bootstrap and publish forest admin cloud projects customization

92 lines 7.82 kB
"use strict"; 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; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const adm_zip_1 = __importDefault(require("adm-zip")); const fs = __importStar(require("fs")); const fsP = __importStar(require("fs/promises")); const environment_variables_1 = require("./environment-variables"); const generate_datasource_config_file_1 = __importDefault(require("./generate-datasource-config-file")); const http_server_1 = __importDefault(require("./http-server")); const update_typings_1 = require("./update-typings"); const errors_1 = require("../errors"); async function tryToClearBootstrap(paths) { try { await Promise.all([ fsP.rm(paths.zip, { force: true }), fsP.rm(paths.extracted, { force: true, recursive: true }), fsP.rm(paths.folder, { force: false, recursive: true }), ]); } catch (e) { return `\nPlease remove "${paths.folderName}" folder and re-run bootstrap command.`; } } async function generateDotEnv(vars, paths) { const envTemplate = await fsP.readFile(paths.dotEnvTemplate, 'utf-8'); let replaced = envTemplate.replace('<FOREST_ENV_SECRET_TO_REPLACE>', vars.FOREST_ENV_SECRET); replaced = replaced.replace('<TOKEN_PATH_TO_REPLACE>', paths.home); // For forest developers. We store in the .env what is non default Object.keys(environment_variables_1.defaultEnvs) .filter(variableKey => vars[variableKey] && vars[variableKey] !== environment_variables_1.defaultEnvs[variableKey]) .forEach(variableKey => { replaced += `\n${variableKey}=${vars[variableKey]}`; }); await fsP.writeFile(paths.env, `${replaced}\n`); } async function bootstrap(vars, httpServer, paths) { if (fs.existsSync(paths.folder)) { throw new errors_1.BusinessError(`You have already a "${paths.folderName}" folder`); } try { await http_server_1.default.downloadCloudCustomizerTemplate(paths.zip); const zip = new adm_zip_1.default(paths.zip); zip.extractAllTo(paths.tmp, false); await Promise.all([ fsP.rename(paths.extracted, paths.folder), fsP.rm(paths.zip, { force: true }), ]); // create the .env file if it does not exist // we do not overwrite it because it may contain sensitive data if (!fs.existsSync(paths.env)) await generateDotEnv(vars, paths); await fsP.writeFile(paths.index, await fsP.readFile(paths.indexTemplate)); // Check that the user has the datasource connection options file if (!fs.existsSync(paths.localDatasourcesPath)) { await (0, generate_datasource_config_file_1.default)(paths.localDatasourcesPath); } const datasources = await httpServer.getDatasources(); await (0, update_typings_1.updateTypings)(datasources, paths); } catch (e) { const error = e; const potentialErrorMessage = await tryToClearBootstrap(paths); throw new errors_1.BusinessError(`Bootstrap failed: ${error.message}. ${potentialErrorMessage || ''}${error.stack}`); } } exports.default = bootstrap; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQTZCO0FBQzdCLHVDQUF5QjtBQUN6QixpREFBbUM7QUFHbkMsbUVBQXNEO0FBQ3RELHdHQUE2RTtBQUM3RSxnRUFBdUM7QUFDdkMscURBQWlEO0FBQ2pELHNDQUEwQztBQUcxQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsS0FBMkI7SUFDNUQsSUFBSTtRQUNGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUNoQixHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDbEMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDekQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDeEQsQ0FBQyxDQUFDO0tBQ0o7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sb0JBQW9CLEtBQUssQ0FBQyxVQUFVLHdDQUF3QyxDQUFDO0tBQ3JGO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxjQUFjLENBQUMsSUFBMEIsRUFBRSxLQUEyQjtJQUNuRixNQUFNLFdBQVcsR0FBRyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RSxJQUFJLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lB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