@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
55 lines • 2.23 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 PermissionFeature extends AbstractFeature_1.default {
code = 'permission';
nameReadable = 'permission';
description = 'Manage permissions for your skill';
dependencies = [];
actionsDir = spruce_skill_utils_1.diskUtil.resolvePath(__dirname, 'actions');
packageDependencies = [
{
name: '@sprucelabs/spruce-permission-plugin@latest',
},
];
writer;
constructor(options) {
super(options);
this.writer = this.Writer('permission');
void this.emitter.on('feature.did-execute', this.handleDidExecuteAction.bind(this));
}
async handleDidExecuteAction({ featureCode, actionCode, }) {
const isInstalled = await this.features.isInstalled('permission');
const isSkillInstalled = await this.features.isInstalled('skill');
const isUpgrading = featureCode === 'node' && actionCode === 'upgrade';
const isSyncingEvents = featureCode === 'event' && actionCode === 'sync';
if (isInstalled && (isUpgrading || isSyncingEvents)) {
const combinedFile = isSkillInstalled
? await this.writePlugin()
: [];
const results = await this.Action('permission', 'sync').execute({});
results.files = [...(results.files ?? []), ...combinedFile];
return results;
}
return {};
}
async afterPackageInstall() {
const files = await this.writePlugin();
const combinedFile = await this.writeTypesFile();
return {
files: [...files, ...combinedFile],
};
}
async writeTypesFile() {
return await this.writer.writeTypesFile(this.cwd, {});
}
async writePlugin() {
return this.writer.writePlugin(this.cwd);
}
}
exports.default = PermissionFeature;
//# sourceMappingURL=PermissionFeature.js.map
;