UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

72 lines (71 loc) 3.02 kB
import { MercuryEventEmitter } from '@sprucelabs/mercury-types'; import { HealthCheckResults } from '@sprucelabs/spruce-skill-utils'; import { CommanderStatic } from 'commander'; import { SpruceSchemas } from './../.spruce/schemas/schemas.types'; import FeatureInstaller from '../features/FeatureInstaller'; import { FeatureAction, FeatureActionResponse } from '../features/features.types'; import { GlobalEmitter, GlobalEventContract } from '../GlobalEmitter'; import { ApiClient, ApiClientFactory } from './apiClient.types'; import { GraphicsInterface as IGraphicsInterface } from './graphicsInterface.types'; export { NpmPackage } from '@sprucelabs/spruce-skill-utils'; export interface GraphicsInterface extends IGraphicsInterface { renderActionSummary(results: ExecutionResults & { totalTime?: number; }): void; getCursorPosition(): Promise<{ x: number; y: number; } | null>; moveCursorTo(x: number, y: number): void; clearBelowCursor(): void; clear(): void; waitForEnter(message?: string): Promise<void>; sendInput(message: string): Promise<void>; setTitle(title: string): void; } export type GeneratedFile = SpruceSchemas.SpruceCli.v2020_07_22.GeneratedFile; export type GeneratedDir = SpruceSchemas.SpruceCli.v2020_07_22.GeneratedDir; export type GeneratedFileOrDir = SpruceSchemas.SpruceCli.v2020_07_22.WatcherDidDetectChangesEmitPayload['changes'][number]; export interface ExecutionResults extends FeatureActionResponse { featureCode: string; actionCode: string; headline: string; action: FeatureAction; namespace?: string; } type Skill = Omit<SpruceSchemas.Spruce.v2020_07_22.Skill, 'creators'>; export type CurrentSkill = Partial<Skill> & { name: string; isRegistered: boolean; namespacePascal: string; }; export type RegisteredSkill = Omit<SpruceSchemas.Spruce.v2020_07_22.Skill, 'creators'>; export type UpgradeMode = SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptions['upgradeMode']; export interface FileDescription { path: string; description: string; shouldOverwriteWhenChanged: boolean; confirmPromptOnFirstWrite?: string; } export type InternalUpdateHandler = (message: string) => void; export type OptionOverrides = Record<string, Record<string, any>>; export type BlockedCommands = Record<string, string>; export interface HealthOptions { shouldRunOnSourceFiles?: boolean; } export interface CliInterface extends MercuryEventEmitter<GlobalEventContract> { installFeatures: FeatureInstaller['install']; getFeature: FeatureInstaller['getFeature']; checkHealth(options?: HealthOptions): Promise<HealthCheckResults>; } export interface CliBootOptions { cwd?: string; homeDir?: string; program?: CommanderStatic['program']; graphicsInterface?: GraphicsInterface; emitter?: GlobalEmitter; apiClientFactory?: ApiClientFactory; featureInstaller?: FeatureInstaller; host?: string; } export type PromiseCache = Record<string, Promise<ApiClient>>;