UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

78 lines 2.67 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 AbstractFeature_1 = __importDefault(require("../AbstractFeature")); class ViewFeature extends AbstractFeature_1.default { nameReadable = 'views'; description = 'Views: Create views using the Heartwood framework.'; code = 'view'; actionsDir = spruce_skill_utils_1.diskUtil.resolvePath(__dirname, 'actions'); packageDependencies = [ { name: '@sprucelabs/heartwood-view-controllers@latest', }, { name: '@sprucelabs/spruce-view-plugin@latest', }, ]; dependencies = [ { code: 'node', isRequired: true, }, { code: 'schema', isRequired: true, }, { code: 'event', isRequired: true, }, ]; constructor(options) { super(options); void this.emitter.on('feature.did-execute', async (payload) => { const { featureCode, actionCode } = payload; const isInstalled = await this.features.isInstalled('view'); if (isInstalled && featureCode === 'node' && actionCode === 'upgrade') { const files = await this.handleDidExecuteUpgrade(); return { files, }; } return {}; }); void this.emitter.on('test.register-abstract-test-classes', async () => { return { abstractClasses: [ { name: 'AbstractViewControllerTest', label: 'AbstractViewControllerTest', import: '@sprucelabs/spruce-view-plugin', featureCode: 'view', }, ], }; }); } async handleDidExecuteUpgrade() { const files = await this.Writer('view').writePlugin(this.cwd); const results = await this.Action('view', 'sync').execute({}); return [...files, ...(results?.files ?? [])]; } async afterPackageInstall() { const files = await this.Writer('view').writePlugin(this.cwd); this.Service('dependency').add({ id: '**', namespace: 'heartwood', }); return { files }; } } exports.default = ViewFeature; //# sourceMappingURL=ViewFeature.js.map