forest-cli
Version:
The Lumberjacks' toolbelt is the Forest CLI which makes easy to manage your back office application directly from the terminal.
57 lines • 4.48 kB
JavaScript
;
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 role_manager_1 = __importDefault(require("../../services/role-manager"));
const with_current_project_1 = __importDefault(require("../../services/with-current-project"));
class RolesCreateCommand extends abstract_authenticated_command_1.default {
constructor(argv, config, plan) {
super(argv, config, plan);
const { assertPresent, env } = this.context;
assertPresent({ env });
this.env = env;
}
async runAuthenticated() {
const { flags } = await this.parse(RolesCreateCommand);
const config = await (0, with_current_project_1.default)({ ...this.env, projectId: flags.projectId });
try {
const role = await new role_manager_1.default(config).createRole(flags.name, config.projectId);
this.logger.info(`Role "${role.name}" created (id: ${role.id}).`);
}
catch (error) {
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 = RolesCreateCommand;
RolesCreateCommand.description = 'Create a new role in a project.';
RolesCreateCommand.flags = {
name: core_1.Flags.string({
char: 'n',
description: 'Name of the role to create.',
required: true,
}),
projectId: core_1.Flags.integer({
char: 'p',
description: 'Forest project ID.',
}),
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3JvbGVzL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLHNDQUFvQztBQUVwQywwR0FBZ0Y7QUFDaEYsK0VBQXNEO0FBQ3RELCtGQUFxRTtBQUVyRSxNQUFxQixrQkFBbUIsU0FBUSx3Q0FBNEI7SUFpQjFFLFlBQVksSUFBYyxFQUFFLE1BQWMsRUFBRSxJQUFLO1FBQy9DLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFCLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM1QyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ3BCLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2RCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsOEJBQWtCLEVBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRXJGLElBQUk7WUFDRixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksc0JBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkU7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FHNUIsQ0FBQztZQUNGLElBQUksUUFBUSxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFO2dCQUNqRSxJQUFJLE1BQU0sQ0FBQztnQkFDWCxJQUFJO29CQUNGLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7aUJBQ3pEO2dCQUFDLE1BQU07b0JBQ04sb0VBQW9FO2lCQUNyRTtnQkFDRCxJQUFJLE1BQU0sRUFBRTtvQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDYixPQUFPO2lCQUNSO2FBQ0Y7WUFDRCxNQUFNLEtBQUssQ0FBQztTQUNiO0lBQ0gsQ0FBQzs7QUFuREgscUNBb0RDO0FBakRpQiw4QkFBVyxHQUFHLGlDQUFpQyxDQUFDO0FBRWhELHdCQUFLLEdBQUc7SUFDdEIsSUFBSSxFQUFFLFlBQUssQ0FBQyxNQUFNLENBQUM7UUFDakIsSUFBSSxFQUFFLEdBQUc7UUFDVCxXQUFXLEVBQUUsNkJBQTZCO1FBQzFDLFFBQVEsRUFBRSxJQUFJO0tBQ2YsQ0FBQztJQUNGLFNBQVMsRUFBRSxZQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3ZCLElBQUksRUFBRSxHQUFHO1FBQ1QsV0FBVyxFQUFFLG9CQUFvQjtLQUNsQyxDQUFDO0NBQ0gsQ0FBQyJ9