@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
42 lines (35 loc) • 1.41 kB
text/typescript
import { buildSchema, SchemaValues } from '@sprucelabs/schema'
import AbstractAction from '../../AbstractAction'
import { FeatureActionResponse } from '../../features.types'
export const optionsSchema = buildSchema({
id: 'publish',
name: 'Publish',
description: 'Publish a skill to make it available to the world!',
fields: {
isInstallable: {
type: 'boolean',
label: 'Make skill installable',
hint: 'Defaults to true. If disabled, your skill is available without needing to be installed. Note: This requires owner role at the platform level.',
},
},
})
export type PublishActionDefinition = typeof optionsSchema
export default class PublishAction extends AbstractAction<PublishActionDefinition> {
public optionsSchema = optionsSchema
public commandAliases = ['publish']
public invocationMessage = 'Publishing... ⚡️'
public async execute(
options?: PublishActionOptions
): Promise<FeatureActionResponse> {
const { isInstallable } = this.validateAndNormalizeOptions(
options ?? {}
)
const skills = this.Store('skill')
await skills.publish({ isInstallable })
return {
summaryLines: ['Your skill has been published!'],
}
}
}
type OptionsSchema = typeof optionsSchema
export type PublishActionOptions = SchemaValues<OptionsSchema>