UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

81 lines 4.33 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 spruce_skill_utils_2 = require("@sprucelabs/spruce-skill-utils"); const syncErrorOptions_schema_1 = __importDefault(require("./../../../.spruce/schemas/spruceCli/v2020_07_22/syncErrorOptions.schema")); const syncSchemasOptions_schema_1 = __importDefault(require("./../../../.spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema")); const AbstractAction_1 = __importDefault(require("../../AbstractAction")); class SyncAction extends AbstractAction_1.default { optionsSchema = syncErrorOptions_schema_1.default; commandAliases = ['sync.errors']; invocationMessage = 'Generating error types... 🤾‍♀️'; async execute(options) { const normalizedOptions = this.validateAndNormalizeOptions(options); const { errorTypesDestinationDir, errorClassDestinationDir } = normalizedOptions; const schemaSyncAction = this.Action('schema', 'sync'); const errorSyncResults = await this.syncErrors(schemaSyncAction, normalizedOptions); if (errorSyncResults.errors) { return errorSyncResults; } if (this.areSyncResultsEmpty(errorSyncResults)) { this.deleteOrphanedDirs(errorTypesDestinationDir); return {}; } const { schemaTemplateItems } = errorSyncResults.meta; const errorTemplateItems = schemaTemplateItems.map((item) => ({ ...item, code: spruce_skill_utils_1.namesUtil.toConst(item.namePascal), })); const errorWriter = this.Writer('error'); const optionsResults = await this.generateOptionTypes(errorWriter, errorTemplateItems, errorTypesDestinationDir); const errorClassGeneratedFiles = await errorWriter.writeOrAppendErrorsToClass(spruce_skill_utils_2.diskUtil.resolvePath(this.cwd, errorClassDestinationDir), errorTemplateItems); return { files: [ ...(errorSyncResults.files ?? []), ...errorClassGeneratedFiles, ...optionsResults, ], }; } deleteOrphanedDirs(errorTypesDestinationDir) { spruce_skill_utils_2.diskUtil.deleteDir(spruce_skill_utils_2.diskUtil.resolvePath(this.cwd, errorTypesDestinationDir)); } async syncErrors(schemaSyncAction, normalizedOptions) { const resolvedErrorTypesDestinationDir = spruce_skill_utils_2.diskUtil.resolvePath(this.cwd, normalizedOptions.errorTypesDestinationDir, 'errors.types.ts'); const syncOptions = (0, schema_1.normalizeSchemaValues)(syncSchemasOptions_schema_1.default, { ...normalizedOptions, schemaTypesDestinationDirOrFile: resolvedErrorTypesDestinationDir, schemaLookupDir: normalizedOptions.errorLookupDir, shouldEnableVersioning: false, globalSchemaNamespace: 'SpruceErrors', shouldFetchRemoteSchemas: false, generateFieldTypes: true, generateStandaloneTypesFile: true, deleteDestinationDirIfNoSchemas: true, shouldFetchCoreSchemas: false, syncingMessage: 'Syncing errors...', }); const errorSyncResults = await schemaSyncAction.execute(syncOptions); return errorSyncResults; } areSyncResultsEmpty(errorSyncResults) { return (!errorSyncResults.meta || !errorSyncResults.files || errorSyncResults.files.length === 0); } async generateOptionTypes(errorGenerator, errorTemplateItems, errorTypesDestinationDir) { if (errorTemplateItems.length === 0) { return []; } const resolvedTypesDestination = spruce_skill_utils_2.diskUtil.resolvePath(this.cwd, errorTypesDestinationDir); const topLevelItems = errorTemplateItems.filter((i) => !i.isNested); const optionsResults = await errorGenerator.writeOptionsTypesFile(resolvedTypesDestination, topLevelItems); return optionsResults; } } exports.default = SyncAction; //# sourceMappingURL=SyncAction.js.map