UNPKG

@augment-vir/node

Version:

A collection of augments, helpers types, functions, and classes only for Node.js (backend) JavaScript environments.

52 lines (47 loc) 1.43 kB
import {check} from '@augment-vir/assert'; import {runShellCommand} from '../../augments/terminal/shell.js'; import {type DockerEnvMap, makeEnvFlags} from './docker-command-inputs.js'; /** * Parameters for `docker.container.runCommand`. * * @category Node : Docker : Util * @category Package : @augment-vir/node * @package [`@augment-vir/node`](https://www.npmjs.com/package/@augment-vir/node) */ export type RunDockerContainerCommandParams = { /** Creates an interactive shell connection. */ tty?: boolean | undefined; containerNameOrId: string; command: string; envMapping?: DockerEnvMap | undefined; executionEnv?: Record<string, string> | undefined; dockerFlags?: ReadonlyArray<string> | undefined; }; export async function runContainerCommand({ tty, containerNameOrId, command, envMapping, executionEnv, dockerFlags = [], }: RunDockerContainerCommandParams) { const envFlags = makeEnvFlags(envMapping); /** Can't test tty in automated tests. */ /* node:coverage ignore next 1 */ const ttyFlag = tty ? '-it' : ''; const fullCommand = [ 'docker', 'exec', ttyFlag, envFlags, ...dockerFlags, containerNameOrId, command, ] .filter(check.isTruthy) .join(' '); return await runShellCommand(fullCommand, { env: executionEnv, rejectOnError: true, }); }