@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
45 lines • 2.36 kB
JavaScript
;
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