@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
92 lines (76 loc) • 2.99 kB
text/typescript
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>>