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