UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

42 lines (41 loc) 2.72 kB
import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'; import { GraphicsInterface } from '../types/cli.types'; import AbstractFeature from './AbstractFeature'; import FeatureInstaller from './FeatureInstaller'; import { FeatureCode, FeatureInstallResponse, FeatureAction, FeatureMap } from './features.types'; export default class ActionQuestionAskerImpl<F extends FeatureCode = FeatureCode> implements ActionQuestionAsker<F> { private ui; static Class?: new (options: ActionQuestionAskerOptions) => ActionQuestionAsker<any>; private featureInstaller; private actionCode; private feature; private shouldAutoHandleDependencies; protected constructor(options: ActionQuestionAskerOptions); static Asker(options: ActionQuestionAskerOptions): ActionQuestionAsker<any>; installOrMarkAsSkippedMissingDependencies(): Promise<FeatureInstallResponse>; private getDependenciesNotInstalled; askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(isInstalled: boolean, options?: Record<string, any> & FeatureCommandExecuteOptions<F>): Promise<Record<string, any> & FeatureCommandExecuteOptions<F>>; askAboutMissingActionOptions<S extends Schema>(action: FeatureAction<S>, options?: Record<string, any> & FeatureCommandExecuteOptions<F>): Promise<SchemaValues<S> | undefined>; installOurFeature(installOptions: Record<string, any>): Promise<FeatureInstallResponse>; private renderHeading; private installOrMarkAsSkippedMissingDependency; private collectAnswers; private getCommandName; private generateConfirmInstallMessage; } type FeatureCommandExecuteOptions<F extends FeatureCode, S extends Schema | undefined = FeatureMap[F]['optionsSchema']> = S extends Schema ? SchemaPartialValues<S> : undefined; interface ActionQuestionAskerOptions { ui: GraphicsInterface; featureInstaller: FeatureInstaller; actionCode: string; feature: AbstractFeature; shouldAutoHandleDependencies: boolean; } export type QuestionAskerOptionsOptions<F extends FeatureCode> = Record<string, any> & FeatureCommandExecuteOptions<F>; export interface ActionQuestionAsker<F extends FeatureCode = FeatureCode> { installOrMarkAsSkippedMissingDependencies(): Promise<FeatureInstallResponse>; askAboutMissingFeatureOptionsIfFeatureIsNotInstalled(isInstalled: boolean, options?: QuestionAskerOptionsOptions<F>): Promise<Record<string, any> & FeatureCommandExecuteOptions<F>>; askAboutMissingActionOptions<S extends Schema>(action: FeatureAction<S>, options?: QuestionAskerOptionsOptions<F>): Promise<SchemaValues<S> | undefined>; installOurFeature(installOptions: Record<string, any>): Promise<FeatureInstallResponse>; } export {};