@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
52 lines • 2.14 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const schema_1 = require("@sprucelabs/schema");
const spruce_skill_utils_1 = require("@sprucelabs/spruce-skill-utils");
const namedTemplateItem_schema_1 = __importDefault(require("./../../../.spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema"));
const AbstractAction_1 = __importDefault(require("../../AbstractAction"));
class CreateAction extends AbstractAction_1.default {
optionsSchema = schema;
invocationMessage = 'Creating a permission contract... 🛡';
commandAliases = [
'create.permissions',
'create.permission',
];
async execute(options) {
const { nameKebab, nameReadable, nameCamel, description } = this.validateAndNormalizeOptions(options);
const destination = spruce_skill_utils_1.diskUtil.resolvePath(this.cwd, 'src', 'permissions');
const writer = this.Writer('permission');
const files = await writer.writeContract(destination, {
nameKebab: nameKebab ?? spruce_skill_utils_1.namesUtil.toKebab(nameReadable),
nameReadable,
nameCamel,
description,
});
await this.Action('permission', 'sync').execute({});
return {
files,
};
}
}
exports.default = CreateAction;
const schema = (0, schema_1.buildSchema)({
id: 'createPermission',
fields: {
nameReadable: {
...namedTemplateItem_schema_1.default.fields.nameReadable,
label: `Name your permission contract`,
hint: `A contract contains many permissions grouped by a responsibility`,
},
...(0, schema_1.pickFields)(namedTemplateItem_schema_1.default.fields, [
'nameCamel',
'nameKebab',
]),
description: {
...namedTemplateItem_schema_1.default.fields.description,
label: `Describe this contract`,
},
},
});
//# sourceMappingURL=CreateAction.js.map