UNPKG

@xec-sh/core

Version:

Universal shell execution engine

151 lines (150 loc) 5.37 kB
import { BaseAdapter, BaseAdapterConfig } from './base-adapter.js'; import { Command } from '../core/command.js'; import { ExecutionResult } from '../core/result.js'; export interface DockerAutoCreateOptions { enabled: boolean; image: string; autoRemove: boolean; volumes?: string[]; } export interface DockerDefaultExecOptions { User?: string; WorkingDir?: string; Env?: string[]; Privileged?: boolean; AttachStdin?: boolean; AttachStdout?: boolean; AttachStderr?: boolean; Tty?: boolean; } export interface DockerImageBuildOptions { tag: string; dockerfile?: string; context?: string; buildArgs?: Record<string, string>; target?: string; noCache?: boolean; pull?: boolean; platform?: string; } export interface DockerComposeOptions { file?: string | string[]; projectName?: string; env?: Record<string, string>; } export interface DockerLogsOptions { follow?: boolean; tail?: number | 'all'; since?: string; until?: string; timestamps?: boolean; } export interface DockerNetworkOptions { driver?: string; subnet?: string; gateway?: string; ipRange?: string; attachable?: boolean; internal?: boolean; } export interface DockerVolumeOptions { driver?: string; driverOpts?: Record<string, string>; labels?: Record<string, string>; } export interface DockerHealthCheckOptions { test: string | string[]; interval?: string; timeout?: string; retries?: number; startPeriod?: string; } export interface DockerAdapterConfig extends BaseAdapterConfig { socketPath?: string; host?: string; port?: number; version?: string; defaultExecOptions?: DockerDefaultExecOptions; autoCreate?: DockerAutoCreateOptions; } export declare class DockerAdapter extends BaseAdapter { protected readonly adapterName = "docker"; private dockerConfig; private tempContainers; constructor(config?: DockerAdapterConfig); private findDockerPath; isAvailable(): Promise<boolean>; execute(command: Command): Promise<ExecutionResult>; private extractDockerOptions; private validateContainerName; private supportsTTY; private getTTYSettings; private containerExists; private createTempContainer; private determineRunMode; private buildDockerExecArgs; private buildDockerRunArgs; protected executeDockerCommand(args: string[], command: Partial<Command>): Promise<{ stdout: string; stderr: string; exitCode: number; signal: string | null; }>; protected createResult(stdout: string, stderr: string, exitCode: number, signal: string | undefined, command: string, startTime: number, endTime: number, context?: { host?: string; container?: string; originalCommand?: Command; }): Promise<ExecutionResult>; dispose(): Promise<void>; listContainers(all?: boolean): Promise<string[]>; createContainer(options: { name: string; image: string; volumes?: string[]; env?: Record<string, string>; ports?: string[]; }): Promise<void>; startContainer(container: string): Promise<void>; runContainer(options: { name: string; image: string; volumes?: string[]; env?: Record<string, string>; ports?: string[]; network?: string; restart?: string; workdir?: string; user?: string; labels?: Record<string, string>; privileged?: boolean; healthcheck?: DockerHealthCheckOptions; command?: string[]; }): Promise<void>; stopContainer(container: string): Promise<void>; removeContainer(container: string, force?: boolean): Promise<void>; buildImage(options: DockerImageBuildOptions): Promise<void>; pushImage(image: string): Promise<void>; pullImage(image: string): Promise<void>; tagImage(source: string, target: string): Promise<void>; listImages(filter?: string): Promise<string[]>; removeImage(image: string, force?: boolean): Promise<void>; getLogs(container: string, options?: DockerLogsOptions): Promise<string>; streamLogs(container: string, onData: (data: string) => void, options?: DockerLogsOptions): Promise<void>; copyToContainer(src: string, container: string, dest: string): Promise<void>; copyFromContainer(container: string, src: string, dest: string): Promise<void>; inspectContainer(container: string): Promise<any>; getStats(container: string): Promise<any>; createNetwork(name: string, options?: DockerNetworkOptions): Promise<void>; removeNetwork(name: string): Promise<void>; listNetworks(): Promise<string[]>; createVolume(name: string, options?: DockerVolumeOptions): Promise<void>; removeVolume(name: string, force?: boolean): Promise<void>; listVolumes(): Promise<string[]>; composeUp(options?: DockerComposeOptions): Promise<void>; composeDown(options?: DockerComposeOptions): Promise<void>; composePs(options?: DockerComposeOptions): Promise<string>; composeLogs(service?: string, options?: DockerComposeOptions): Promise<string>; waitForHealthy(container: string, timeout?: number): Promise<void>; execJson<T = any>(container: string, command: string[]): Promise<T>; private buildComposeArgs; }