UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

104 lines 4.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const schema_1 = require("@sprucelabs/schema"); const spruce_event_utils_1 = require("@sprucelabs/spruce-event-utils"); const SpruceError_1 = __importDefault(require("../../../errors/SpruceError")); const action_utility_1 = __importDefault(require("../../../utilities/action.utility")); const AbstractAction_1 = __importDefault(require("../../AbstractAction")); const RegisterAction_1 = require("./RegisterAction"); const optionsSchema = (0, schema_1.buildSchema)({ id: 'loginSkillAction', description: 'If you already registered your skill but lost your env or changed environments.', fields: { skillSlug: { type: 'text', label: 'Namespace', }, }, }); class LoginAction extends AbstractAction_1.default { optionsSchema = optionsSchema; commandAliases = ['login.skill']; invocationMessage = 'Logging in as skill... ⚡️'; async execute(options) { const { skillSlug } = this.validateAndNormalizeOptions(options); const person = this.Service('auth').getLoggedInPerson(); let loginResponse = {}; let skillResponse = {}; if (!person) { this.ui.renderLine('You gotta login as a person before you can login as a skill.'); const phone = await this.ui.prompt({ type: 'phone', label: 'Phone number', isRequired: true, }); loginResponse = await this.Action('person', 'login').execute({ phone, }); } const client = await this.connectToApi(); let [{ skills }] = await client.emitAndFlattenResponses('list-skills::v2020_12_25', { payload: { shouldOnlyShowMine: true, }, }); if (skillSlug) { const match = skills.find((s) => s.slug === skillSlug); if (!match) { return { errors: [ new SpruceError_1.default({ code: 'SKILL_NOT_FOUND', friendlyMessage: `I couldn't find a skill that you own with the slug: ${skillSlug}`, }), ], }; } skills = [match]; } if (skills.length === 0) { const error = new SpruceError_1.default({ code: 'NO_SKILLS_REGISTERED' }); if (error) { return { errors: [error], }; } } else if (skills.length > 1) { const selectedSkillId = await this.ui.prompt({ type: 'select', label: 'Which skill are we logging in as?', isRequired: true, options: { choices: skills.map((s) => ({ label: s.name, value: s.id, })), }, }); skills = skills.filter((s) => s.id === selectedSkillId); } if (skills.length === 1) { const currentSkillResults = await client.emit('get-skill::v2020_12_25', { target: { skillId: skills[0].id, }, payload: { shouldIncludeApiKey: true, }, }); const { skill } = spruce_event_utils_1.eventResponseUtil.getFirstResponseOrThrow(currentSkillResults); this.Service('auth').updateCurrentSkill(skill); skillResponse.summaryLines = (0, RegisterAction_1.generateSkillSummaryLines)(skill); skillResponse.meta = { skill, }; } return action_utility_1.default.mergeActionResults(loginResponse, skillResponse); } } exports.default = LoginAction; //# sourceMappingURL=LoginAction.js.map