@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
64 lines • 2.39 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 ui_utility_1 = __importDefault(require("../../utilities/ui.utility"));
const AbstractFeature_1 = __importDefault(require("../AbstractFeature"));
class StoreFeature extends AbstractFeature_1.default {
nameReadable = 'Data Stores';
description = 'For working with remote places of storage.';
code = 'store';
dependencies = [
{
code: 'skill',
isRequired: true,
},
];
_packageDependencies = [
{ name: '@sprucelabs/spruce-store-plugin@latest', isDev: false },
{ name: '@sprucelabs/data-stores@latest', isDev: false },
];
actionsDir = spruce_skill_utils_1.diskUtil.resolvePath(__dirname, 'actions');
constructor(options) {
super(options);
void this.emitter.on('test.register-abstract-test-classes', this.registerAbstractTestClassHandler.bind(this));
void this.emitter.on('feature.did-execute', this.handleDidExecute.bind(this));
}
async registerAbstractTestClassHandler() {
return {
abstractClasses: [
{
name: 'AbstractStoreTest',
label: 'AbstractStoreTest',
import: '@sprucelabs/spruce-store-plugin',
featureCode: 'store',
},
],
};
}
async handleDidExecute(payload) {
const isInstalled = await this.features.isInstalled('store');
const isUpgrade = isInstalled &&
payload.featureCode === 'node' &&
payload.actionCode === 'upgrade';
if (isUpgrade) {
ui_utility_1.default.renderMasthead({
ui: this.ui,
headline: 'Re-syncing data stores...',
});
const results = await this.Action('store', 'sync').execute({});
return results;
}
return {};
}
async afterPackageInstall() {
const files = await this.Writer('store').writePlugin(this.cwd);
return {
files,
};
}
}
exports.default = StoreFeature;
//# sourceMappingURL=StoreFeature.js.map