@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
43 lines (36 loc) • 1.48 kB
text/typescript
import { buildSchema, SchemaValues } from '@sprucelabs/schema'
import namedTemplateItemBuilder from '../../../schemas/v2020_07_22/namedTemplateItem.builder'
import AbstractAction from '../../AbstractAction'
import { FeatureActionResponse } from '../../features.types'
const optionsSchema = buildSchema({
id: 'createLogTransportOptions',
description:
'Send logs wherever you want based on their severity. We like to send console.error to a Slack channel the team uses.',
fields: {
nameReadable: {
type: 'text',
label: 'What is the name of your transport?',
isRequired: true,
hint: 'E.g. Slack or Email',
},
nameCamel: namedTemplateItemBuilder.fields.nameCamel,
},
})
type OptionsSchema = typeof optionsSchema
type Options = SchemaValues<OptionsSchema>
export default class CreateLogTransportAction extends AbstractAction<OptionsSchema> {
public optionsSchema = optionsSchema
public invocationMessage = 'Creating a new log transport... ✍️'
public commandAliases = ['create.log.transport']
public async execute(options: Options): Promise<FeatureActionResponse> {
const { nameCamel, nameReadable } =
this.validateAndNormalizeOptions(options)
const file = await this.Writer('log').writeTransportPlugin(this.cwd, {
nameCamel,
nameReadable,
})
return {
files: [file],
}
}
}