@cto.ai/ops
Version:
💻 CTO.ai - The CLI built for Teams 🚀
193 lines (192 loc) • 7.46 kB
TypeScript
import { Config, Container, OpCommand, RunCommandArgs } from './../types';
import Docker, { ContainerCreateOptions } from '@cto.ai/dockerode';
import { OpJob, OpPipeline, OpService as OpServicePreview } from './../types/OpsYml';
import { AnalyticsService } from './../services/Analytics';
import { ContainerService } from './../services/Container';
import { FeathersClient } from './../services/Feathers';
import { ImageService } from './../services/Image';
import { OpsYmlEnvVar } from '../types/OpsYml';
import { RegistryAuthService } from './../services/RegistryAuth';
import { BuildOptions } from '../types/Docker';
export interface OpRunInputs {
op: OpCommand;
isPipeline: boolean;
config: Config;
parsedArgs: RunCommandArgs;
options: ContainerCreateOptions;
container: Docker.Container;
version: string;
flags: {
nocache: boolean;
};
}
export declare class OpService {
protected registryAuthService: RegistryAuthService;
protected imageService: ImageService;
protected containerService: ContainerService;
protected analytics: AnalyticsService;
protected api: FeathersClient;
constructor(registryAuthService?: RegistryAuthService, imageService?: ImageService, containerService?: ContainerService, analytics?: AnalyticsService, api?: FeathersClient);
opBuild: (op: OpCommand, opPath: string, config: Config, options: BuildOptions) => Promise<void>;
opsBuildLoop: (ops: OpCommand[], opPath: string, config: Config, options: BuildOptions) => Promise<void>;
setDefaultRegistryToken: (config: Config) => Promise<void>;
getOpsFromFileSystem: (opPath: string) => Promise<any>;
convertOpsToCommands: (opsToBuild: (OpCommand | OpPipeline | OpServicePreview)[], config: Config, opPath: string) => Promise<OpCommand[]>;
convertPipelinesToOps: (pipelines: OpPipeline[], config: Config, opPath: string) => Promise<OpCommand[]>;
createJobContents: (config: Config, pipeline: OpPipeline, job: OpJob, jobIndex: number) => Promise<string>;
addJobPackages: (packages: string[], targetFile: string) => void;
writeJobContents: (contents: string, targetFile: string) => void;
run(op: OpCommand, isPipeline: boolean, parsedArgs: RunCommandArgs, config: Config, version: string, flags: {
nocache: boolean;
}): Promise<Boolean>;
updateOpFields: (inputs: OpRunInputs) => OpRunInputs;
getImage: (inputs: OpRunInputs) => Promise<OpRunInputs>;
pullImageFromRegistry: (op: OpCommand, config: Config, version: string) => Promise<void>;
setOpImageUrl: (op: OpCommand, config: Config) => string;
setEnvs: (inputs: OpRunInputs) => OpRunInputs;
hostSetup: ({ op, ...rest }: OpRunInputs) => {
op: {
bind: string[];
type: "command" | "glue_code" | "job" | "service";
run: string;
sdk?: string | undefined;
network?: string | undefined;
src: string[];
mountCwd: boolean;
mountHome: boolean;
port: string[];
image: string | void;
domain: string | void;
name: string;
version: string;
platformVersion: string;
description: string;
publishDescription?: string | undefined;
env?: string[] | OpsYmlEnvVar | undefined;
runId: string;
opsHome: string;
configDir: string;
stateDir: string;
localStateDir: string;
teamID?: string | undefined;
teamName: string;
help: {
usage: string;
arguments: {
[key: string]: string;
};
options: {
[key: string]: string;
};
};
isPublic: boolean;
isPublished?: boolean | undefined;
id: string;
createdAt: string;
updatedAt: string;
local?: boolean | undefined;
events?: string[] | undefined;
trigger?: string[] | undefined;
};
isPipeline: boolean;
config: Config;
parsedArgs: RunCommandArgs;
options: ContainerCreateOptions;
container: Docker.Container;
version: string;
flags: {
nocache: boolean;
};
};
setBinds: ({ op, ...rest }: OpRunInputs) => {
op: {
bind: string[];
type: "command" | "glue_code" | "job" | "service";
run: string;
sdk?: string | undefined;
network?: string | undefined;
src: string[];
mountCwd: boolean;
mountHome: boolean;
port: string[];
image: string | void;
domain: string | void;
name: string;
version: string;
platformVersion: string;
description: string;
publishDescription?: string | undefined;
env?: string[] | OpsYmlEnvVar | undefined;
runId: string;
opsHome: string;
configDir: string;
stateDir: string;
localStateDir: string;
teamID?: string | undefined;
teamName: string;
help: {
usage: string;
arguments: {
[key: string]: string;
};
options: {
[key: string]: string;
};
};
isPublic: boolean;
isPublished?: boolean | undefined;
id: string;
createdAt: string;
updatedAt: string;
local?: boolean | undefined;
events?: string[] | undefined;
trigger?: string[] | undefined;
};
isPipeline: boolean;
config: Config;
parsedArgs: RunCommandArgs;
options: ContainerCreateOptions;
container: Docker.Container;
version: string;
flags: {
nocache: boolean;
};
};
getOptions: ({ op, config, ...rest }: OpRunInputs) => {
op: OpCommand;
options: {
AttachStderr: boolean;
AttachStdin: boolean;
AttachStdout: boolean;
Cmd: string[];
Env: string[] | OpsYmlEnvVar | undefined;
WorkingDir: string;
HostConfig: {
Binds: string[];
NetworkMode: string | undefined;
SecurityOpt: string[];
};
Image: string | void;
OpenStdin: boolean;
StdinOnce: boolean;
Tty: boolean;
Volumes: {};
VolumesFrom: never[];
};
isPipeline: boolean;
parsedArgs: RunCommandArgs;
container: Docker.Container;
version: string;
flags: {
nocache: boolean;
};
};
addPortsToOptions: ({ op, options, ...rest }: OpRunInputs) => Promise<OpRunInputs>;
createContainer: (inputs: OpRunInputs) => Promise<OpRunInputs>;
attachToContainer: (inputs: OpRunInputs) => Promise<OpRunInputs>;
convertEnvStringsToObject: (acc: Container<string>, curr: string) => {
[x: string]: string;
};
overrideEnvWithProcessEnv: (processEnv: Container<string | undefined>) => ([key, val,]: [string, string]) => string[];
replaceHomeAlias: (bindPair: string) => string;
}