@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
47 lines • 1.66 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 ConversationFeature extends AbstractFeature_1.default {
nameReadable = 'Conversation';
code = 'conversation';
description = 'Computers like to talk, too.';
dependencies = [
{ code: 'event', isRequired: true },
];
packageDependencies = [
{
name: '@sprucelabs/spruce-conversation-plugin@latest',
isDev: false,
},
];
actionsDir = spruce_skill_utils_1.diskUtil.resolvePath(__dirname, 'actions');
constructor(options) {
super(options);
void this.emitter.on('feature.will-execute', this.handleWillExecute.bind(this));
}
async handleWillExecute(payload) {
const isInstalled = await this.features.isInstalled('conversation');
if (payload.featureCode === 'node' &&
payload.actionCode === 'upgrade' &&
isInstalled) {
const files = await this.writePlugin();
return { files };
}
return {};
}
async afterPackageInstall() {
const files = await this.writePlugin();
return {
files,
};
}
async writePlugin() {
return this.Writer('conversation').writePlugin(this.cwd);
}
}
exports.default = ConversationFeature;
//# sourceMappingURL=ConversationFeature.js.map