UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

55 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 spruce_skill_utils_1 = require("@sprucelabs/spruce-skill-utils"); const SpruceError_1 = __importDefault(require("../../../errors/SpruceError")); const AbstractWriter_1 = __importDefault(require("../../../writers/AbstractWriter")); class StoreWriter extends AbstractWriter_1.default { async writeStore(destination, options) { const { namePascalPlural } = options; const files = []; const filename = `${namePascalPlural}.store.ts`; const fileDest = spruce_skill_utils_1.diskUtil.resolvePath(destination, 'src', 'stores', filename); if (spruce_skill_utils_1.diskUtil.doesFileExist(fileDest)) { throw new SpruceError_1.default({ code: 'STORE_EXISTS' }); } const contents = this.templates.store(options); spruce_skill_utils_1.diskUtil.writeFile(fileDest, contents); await this.lint(fileDest); files.push({ action: 'generated', name: filename, path: fileDest, }); return files; } writePlugin(cwd) { const destination = spruce_skill_utils_1.diskUtil.resolveHashSprucePath(cwd, 'features', 'store.plugin.ts'); const pluginContents = this.templates.storePlugin(); const results = this.writeFileIfChangedMixinResults(destination, pluginContents, 'Loads all your data stores and connects you to any databases you have configured.'); return results; } async writeTypesAndMap(destination, options) { const [types, map] = await Promise.all([ this.writeTypes(destination, options), this.writeMap(destination, options), ]); return [...types, ...map]; } async writeTypes(destination, options) { const file = spruce_skill_utils_1.diskUtil.resolvePath(destination, 'stores.types.ts'); const typesContent = this.templates.storeTypes(options); const files = this.writeFileIfChangedMixinResults(file, typesContent, 'The type merging for so the StoreFactory properly types you stores.'); return files; } async writeMap(destination, options) { const file = spruce_skill_utils_1.diskUtil.resolvePath(destination, 'stores.ts'); const mapContent = this.templates.stores(options); const files = this.writeFileIfChangedMixinResults(file, mapContent, 'A reference to all your data stores for easy inclusion.'); return files; } } exports.default = StoreWriter; //# sourceMappingURL=StoreWriter.js.map