UNPKG

forest-cli

Version:

The Lumberjacks' toolbelt is the Forest CLI which makes easy to manage your back office application directly from the terminal.

75 lines 6.43 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@oclif/core"); const abstract_authenticated_command_1 = __importDefault(require("../../abstract-authenticated-command")); const environment_manager_1 = __importDefault(require("../../services/environment-manager")); const role_manager_1 = __importDefault(require("../../services/role-manager")); const with_current_project_1 = __importDefault(require("../../services/with-current-project")); class RolesCopyCommand extends abstract_authenticated_command_1.default { constructor(argv, config, plan) { super(argv, config, plan); const { assertPresent, env } = this.context; assertPresent({ env }); this.env = env; } resolveEnvByName(environments, name) { const match = environments.find(e => e.name === name); if (match) return match; const available = environments.map(e => e.name).join(', ') || '(none)'; this.logger.error(`Environment "${name}" not found in this project. Available: ${available}.`); return this.exit(1); } async runAuthenticated() { const { flags } = await this.parse(RolesCopyCommand); const config = await (0, with_current_project_1.default)({ ...this.env, projectId: flags.projectId }); try { const environments = await new environment_manager_1.default(config).listEnvironments(); const fromEnv = this.resolveEnvByName(environments, flags.from); const toEnv = this.resolveEnvByName(environments, flags.to); await new role_manager_1.default(config).copyPermissions(fromEnv.id, toEnv.id); this.logger.info(`Permissions copied from "${flags.from}" to "${flags.to}".`); } catch (error) { // 401/403 keep flowing to the authenticated-command handler. const { response, status } = error; if (response && status !== 401 && status !== 403 && response.text) { let detail; try { detail = JSON.parse(response.text)?.errors?.[0]?.detail; } catch { // Non-JSON error body: fall through and rethrow the original error. } if (detail) { this.logger.error(detail); this.exit(1); return; } } throw error; } } } exports.default = RolesCopyCommand; RolesCopyCommand.description = 'Copy role permissions from one environment to another.'; RolesCopyCommand.flags = { from: core_1.Flags.string({ char: 'f', description: 'Source environment name.', required: true, }), to: core_1.Flags.string({ char: 't', description: 'Destination environment name.', required: true, }), projectId: core_1.Flags.integer({ char: 'p', description: 'Forest project ID.', }), }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29weS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9yb2xlcy9jb3B5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsc0NBQW9DO0FBRXBDLDBHQUFnRjtBQUNoRiw2RkFBb0U7QUFDcEUsK0VBQXNEO0FBQ3RELCtGQUFxRTtBQUlyRSxNQUFxQixnQkFBaUIsU0FBUSx3Q0FBNEI7SUFzQnhFLFlBQVksSUFBYyxFQUFFLE1BQWMsRUFBRSxJQUFLO1FBQy9DLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxZQUEyQixFQUFFLElBQVk7UUFDaEUsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDdEQsSUFBSSxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDeEIsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLDJDQUEyQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQy9GLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQjtRQUNwQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDhCQUFrQixFQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUVyRixJQUFJO1lBQ0YsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLDZCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0UsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFNUQsTUFBTSxJQUFJLHNCQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixLQUFLLENBQUMsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQy9FO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCw2REFBNkQ7WUFDN0QsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUEwRCxDQUFDO1lBQ3hGLElBQUksUUFBUSxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUNqRSxJQUFJLE1BQU0sQ0FBQztnQkFDWCxJQUFJO29CQUNGLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7aUJBQ3pEO2dCQUFDLE1BQU07b0JBQ04sb0VBQW9FO2lCQUNyRTtnQkFDRCxJQUFJLE1BQU0sRUFBRTtvQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDYixPQUFPO2lCQUNSO2FBQ0Y7WUFFRCxNQUFNLEtBQUssQ0FBQztTQUNiO0lBQ0gsQ0FBQzs7QUFuRUgsbUNBb0VDO0FBakVpQiw0QkFBVyxHQUFHLHdEQUF3RCxDQUFDO0FBRXZFLHNCQUFLLEdBQUc7SUFDdEIsSUFBSSxFQUFFLFlBQUssQ0FBQyxNQUFNLENBQUM7UUFDakIsSUFBSSxFQUFFLEdBQUc7UUFDVCxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQztJQUNGLEVBQUUsRUFBRSxZQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2YsSUFBSSxFQUFFLEdBQUc7UUFDVCxXQUFXLEVBQUUsK0JBQStCO1FBQzVDLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQztJQUNGLFNBQVMsRUFBRSxZQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxHQUFHO1FBQ1QsV0FBVyxFQUFFLG9CQUFvQjtLQUNsQyxDQUFDO0NBQ0gsQ0FBQyJ9