UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

58 lines 2.72 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_skill_utils_1 = require("@sprucelabs/spruce-skill-utils"); const namedTemplateItem_builder_1 = __importDefault(require("../../../schemas/v2020_07_22/namedTemplateItem.builder")); const action_utility_1 = __importDefault(require("../../../utilities/action.utility")); const AbstractAction_1 = __importDefault(require("../../AbstractAction")); const optionsSchema = (0, schema_1.buildSchema)({ id: 'createStoreOptions', description: 'Create a place to store data. Can be a database, can be memory, can be a spreadsheet. If you need to store data, do it here.', fields: { nameReadable: { ...namedTemplateItem_builder_1.default.fields.nameReadable, label: 'Store name (singular)', hint: 'Make it easy to read and singlar, e.g. Person or Bid', }, nameReadablePlural: { ...namedTemplateItem_builder_1.default.fields.nameReadablePlural, label: 'Store name (plural)', hint: 'Make it easy to read and plural, e.g. People or Bids', }, namePascal: { ...namedTemplateItem_builder_1.default.fields.namePascal, isRequired: true, }, namePascalPlural: namedTemplateItem_builder_1.default.fields.namePascalPlural, nameSnakePlural: namedTemplateItem_builder_1.default.fields.nameSnakePlural, }, }); class CreateAction extends AbstractAction_1.default { optionsSchema = optionsSchema; invocationMessage = 'Creating a data store... 💿'; async execute(options) { const { namePascal, namePascalPlural, nameSnakePlural, nameReadablePlural, } = this.validateAndNormalizeOptions(options); const writer = this.Writer('store'); try { const files = await writer.writeStore(this.cwd, { namePascal, namePascalPlural: namePascalPlural ?? spruce_skill_utils_1.namesUtil.toPascal(nameReadablePlural), nameSnakePlural: nameSnakePlural ?? spruce_skill_utils_1.namesUtil.toSnake(nameReadablePlural), }); const syncResults = await this.Action('store', 'sync').execute({}); return action_utility_1.default.mergeActionResults(syncResults, { files, }); } catch (err) { return { errors: [err], }; } } } exports.default = CreateAction; //# sourceMappingURL=CreateAction.js.map