@xec-sh/core
Version:
Universal shell execution engine
46 lines (45 loc) • 1.63 kB
TypeScript
import { ExecutionResult } from '../core/result.js';
import { BaseAdapter, BaseAdapterConfig } from './base-adapter.js';
import { Command, SSHAdapterOptions, DockerAdapterOptions } from '../core/command.js';
export interface RemoteDockerAdapterOptions {
type: 'remote-docker';
ssh: Omit<SSHAdapterOptions, 'type'>;
docker: Omit<DockerAdapterOptions, 'type'>;
}
export interface RemoteDockerAdapterConfig extends BaseAdapterConfig {
ssh: {
host: string;
username: string;
port?: number;
privateKey?: string | Buffer;
passphrase?: string;
password?: string;
readyTimeout?: number;
keepaliveInterval?: number;
keepaliveCountMax?: number;
};
dockerPath?: string;
autoCreate?: {
enabled: boolean;
image: string;
autoRemove: boolean;
volumes?: string[];
};
}
export declare class RemoteDockerAdapter extends BaseAdapter {
protected readonly adapterName = "remote-docker";
private remoteDockerConfig;
private sshClient;
private tempContainers;
constructor(config: RemoteDockerAdapterConfig);
isAvailable(): Promise<boolean>;
execute(command: Command): Promise<ExecutionResult>;
private extractRemoteDockerOptions;
private buildDockerExecCommand;
private containerExists;
private createTempContainer;
private getConnection;
private executeSSHCommand;
dispose(): Promise<void>;
}
export declare function createRemoteDockerAdapter(sshOptions: Omit<SSHAdapterOptions, 'type'>, dockerOptions?: Partial<RemoteDockerAdapterConfig>): RemoteDockerAdapter;