Select Git revision
Halil İbrahim Şener
authored and
GitHub
committed
Introduces a new option to pass custom environment variables to child processes. So that users can provide/override environment variables to influence executions, e.g. setting MAVEN_OPTS or passing credentials for private registries for the locking process.
common.ts 1.23 KiB
import {
ExecOptions as ChildProcessExecOptions,
exec as cpExec,
} from 'child_process';
import { promisify } from 'util';
export type Opt<T> = T | null | undefined;
export enum BinarySource {
Auto = 'auto',
Docker = 'docker',
Global = 'global',
}
export interface ExecConfig {
binarySource: Opt<BinarySource>;
customEnvVariables: Opt<Record<string, string>>;
dockerImagePrefix: Opt<string>;
dockerUser: Opt<string>;
localDir: Opt<string>;
cacheDir: Opt<string>;
}
export type VolumesPair = [string, string];
export type VolumeOption = Opt<string | VolumesPair>;
export type DockerExtraCommand = Opt<string>;
export type DockerExtraCommands = Opt<DockerExtraCommand[]>;
export interface DockerOptions {
image: string;
tag?: Opt<string>;
tagScheme?: Opt<string>;
tagConstraint?: Opt<string>;
volumes?: Opt<VolumeOption[]>;
envVars?: Opt<Opt<string>[]>;
cwd?: Opt<string>;
preCommands?: DockerExtraCommands;
postCommands?: DockerExtraCommands;
}
export interface RawExecOptions extends ChildProcessExecOptions {
encoding: string;
}
export interface ExecResult {
stdout: string;
stderr: string;
}
export const rawExec: (
cmd: string,
opts: RawExecOptions
) => Promise<ExecResult> = promisify(cpExec);