@forestadmin/forest-cloud
Version:
Utility to bootstrap and publish forest admin cloud projects customization
53 lines • 6.43 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const action_runner_1 = __importDefault(require("../dialogs/action-runner"));
const check_latest_version_1 = __importDefault(require("../dialogs/check-latest-version"));
const errors_1 = require("../errors");
const environment_variables_1 = require("../services/environment-variables");
const http_server_1 = __importDefault(require("../services/http-server"));
const starting_agent_locally_1 = require("../services/starting-agent-locally");
const shared_1 = require("../shared");
exports.default = (program, context) => {
const { logger, getCurrentVersion, buildHttpServer, login, getEnvironmentVariables, generateDatasourceConfigFile, distPathManager, } = context;
const agentLogger = (level, ...args) => {
const loggerLevel = process.env.LOG_LEVEL ?? 'Info';
const levels = ['Debug', 'Info', 'Warn', 'Error'];
if (levels.indexOf(level) >= levels.indexOf(loggerLevel)) {
logger[level.toLowerCase()](...args);
}
};
program
.command('start')
.description('Starts the agent locally to test your code customizations before publishing to your production environment.')
.action((0, action_runner_1.default)(logger.spinner, async () => {
await (0, check_latest_version_1.default)(logger.spinner, getCurrentVersion(), http_server_1.default.getLatestVersion);
logger.info('Starting agent locally…');
const vars = await (0, shared_1.loginIfMissingAuthAndReturnEnvironmentVariables)(login, logger, getEnvironmentVariables);
(0, environment_variables_1.validateEnvironmentVariables)(vars);
// Check that /d.forest/.environments does contains env secret yet
if (!fs_1.default.existsSync(distPathManager.localCloudEnvironmentConfigPath)) {
fs_1.default.writeFileSync(distPathManager.localCloudEnvironmentConfigPath, JSON.stringify({}));
}
// eslint-disable-next-line import/no-dynamic-require, global-require, @typescript-eslint/no-var-requires
const localCloudEnvironmentsConfig = require(distPathManager.localCloudEnvironmentConfigPath);
let environmentSecret = localCloudEnvironmentsConfig[`${vars.FOREST_ENV_SECRET}`];
if (!environmentSecret) {
environmentSecret = (await buildHttpServer(vars).getOrCreateNewDevelopmentEnvironment())
.data.attributes.secret_key;
// Add it to local variables
localCloudEnvironmentsConfig[`${vars.FOREST_ENV_SECRET}`] = environmentSecret;
fs_1.default.writeFileSync(distPathManager.localCloudEnvironmentConfigPath, JSON.stringify(localCloudEnvironmentsConfig));
}
// Check that the user has the datasource connection options file
if (!fs_1.default.existsSync(distPathManager.localDatasourcesPath)) {
await generateDatasourceConfigFile(distPathManager.localDatasourcesPath);
throw new errors_1.BusinessError(`Could not find configuration for your local datasource connection options. A new file (${distPathManager.localDatasourcesPath}) has been generated. Please complete it with your local database credentials.`);
}
await (0, starting_agent_locally_1.startingAgent)(distPathManager, { forestServerUrl: vars.FOREST_SERVER_URL, envSecret: environmentSecret }, agentLogger);
}));
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc3RhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSw0Q0FBb0I7QUFFcEIsNkVBQW9EO0FBQ3BELDJGQUFpRTtBQUNqRSxzQ0FBMEM7QUFDMUMsNkVBQWlGO0FBQ2pGLDBFQUFpRDtBQUNqRCwrRUFBbUU7QUFDbkUsc0NBQTRFO0FBRzVFLGtCQUFlLENBQUMsT0FBZ0IsRUFBRSxPQUFxQixFQUFFLEVBQUU7SUFDekQsTUFBTSxFQUNKLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLEtBQUssRUFDTCx1QkFBdUIsRUFDdkIsNEJBQTRCLEVBQzVCLGVBQWUsR0FDaEIsR0FBRyxPQUFPLENBQUM7SUFFWixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWEsRUFBRSxHQUFHLElBQWUsRUFBRSxFQUFFO1FBQ3hELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWxELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsT0FBTztTQUNKLE9BQU8sQ0FBQyxPQUFPLENBQUM7U0FDaEIsV0FBVyxDQUNWLDZHQUE2RyxDQUM5RztTQUNBLE1BQU0sQ0FDTCxJQUFBLHVCQUFZLEVBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksRUFBRTtRQUN0QyxNQUFNLElBQUEsOEJBQWtCLEVBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxFQUFFLHFCQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzRixNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLHdEQUErQyxFQUNoRSxLQUFLLEVBQ0wsTUFBTSxFQUNOLHVCQUF1QixDQUN4QixDQUFDO1FBQ0YsSUFBQSxvREFBNEIsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxrRUFBa0U7UUFDbEUsSUFBSSxDQUFDLFlBQUUsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLCtCQUErQixDQUFDLEVBQUU7WUFDbkUsWUFBRSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3ZGO1FBRUQseUdBQXlHO1FBQ3pHLE1BQU0sNEJBQTRCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBRTlGLElBQUksaUJBQWlCLEdBQUcsNEJBQTRCLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBRWxGLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QixpQkFBaUIsR0FBRyxDQUFDLE1BQU0sZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLG9DQUFvQyxFQUFFLENBQUM7aUJBQ3JGLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1lBRTlCLDRCQUE0QjtZQUM1Qiw0QkFBNEIsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7WUFDOUUsWUFBRSxDQUFDLGFBQWEsQ0FDZCxlQUFlLENBQUMsK0JBQStCLEVBQy9DLElBQUksQ0FBQyxTQUFTLENBQUMsNEJBQTRCLENBQUMsQ0FDN0MsQ0FBQztTQUNIO1FBRUQsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxZQUFFLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQ3hELE1BQU0sNEJBQTRCLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDekUsTUFBTSxJQUFJLHNCQUFhLENBQ3JCLDBGQUEwRixlQUFlLENBQUMsb0JBQW9CLGdGQUFnRixDQUMvTSxDQUFDO1NBQ0g7UUFFRCxNQUFNLElBQUEsc0NBQWEsRUFDakIsZUFBZSxFQUNmLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsRUFDekUsV0FBVyxDQUNaLENBQUM7SUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0FBQ04sQ0FBQyxDQUFDIn0=