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