UNPKG

@forestadmin/forest-cloud

Version:

Utility to bootstrap and publish forest admin cloud projects customization

102 lines 8.27 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 () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __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 }); exports.default = bootstrap; 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, 'utf-8')); // 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}`); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVDQSw0QkF3Q0M7QUE1RUQsc0RBQTZCO0FBQzdCLHVDQUF5QjtBQUN6QixpREFBbUM7QUFFbkMsbUVBQXNEO0FBQ3RELHdHQUE2RTtBQUM3RSxnRUFBdUM7QUFDdkMscURBQWlEO0FBQ2pELHNDQUEwQztBQUUxQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsS0FBMkI7SUFDNUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNsQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN6RCxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN4RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sb0JBQW9CLEtBQUssQ0FBQyxVQUFVLHdDQUF3QyxDQUFDO0lBQ3RGLENBQUM7QUFDSCxDQUFDO0FBRUQsS0FBSyxVQUFVLGNBQWMsQ0FBQyxJQUEwQixFQUFFLEtBQTJCO0lBQ25GLE1BQU0sV0FBVyxHQUFHLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLElBQUksUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENB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