UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

45 lines 2.36 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const spruce_skill_utils_1 = require("@sprucelabs/spruce-skill-utils"); const syncSchemaFieldsOptions_schema_1 = __importDefault(require("./../../../.spruce/schemas/spruceCli/v2020_07_22/syncSchemaFieldsOptions.schema")); const FieldTemplateItemBuilder_1 = __importDefault(require("../../../templateItemBuilders/FieldTemplateItemBuilder")); const AbstractAction_1 = __importDefault(require("../../AbstractAction")); class FieldsSyncAction extends AbstractAction_1.default { optionsSchema = syncSchemaFieldsOptions_schema_1.default; commandAliases = ['sync.fields']; invocationMessage = 'Syncing schema field types (e.g. number, phone, etc.)... 📃'; async execute(options) { this.ui.startLoading(`Syncing fields...`); const normalizedOptions = this.validateAndNormalizeOptions(options); const { fieldTypesDestinationDir, addonsLookupDir, generateFieldTypes, } = normalizedOptions; const resolvedFieldTypesDestination = spruce_skill_utils_1.diskUtil.resolvePath(this.cwd, fieldTypesDestinationDir); const generatedFiles = []; const schemaStore = this.Store('schema'); this.ui.startLoading('Pulling field types...'); const { fields, errors } = await schemaStore.fetchFields({ localAddonsDir: spruce_skill_utils_1.diskUtil.resolvePath(this.cwd, addonsLookupDir), }); const fieldTemplateItemBuilder = new FieldTemplateItemBuilder_1.default(); const fieldTemplateItems = fieldTemplateItemBuilder.generateTemplateItems(fields); const schemaGenerator = this.Writer('schema'); if (generateFieldTypes) { const results = await schemaGenerator.writeFieldTypes(resolvedFieldTypesDestination, { fieldTemplateItems, }); generatedFiles.push(...results); } this.ui.stopLoading(); return { files: generatedFiles, errors: errors.length > 0 ? errors : undefined, meta: { fieldTemplateItems, }, }; } } exports.default = FieldsSyncAction; //# sourceMappingURL=SyncFieldsAction.js.map