@augment-vir/docker
Advanced tools
Comparing version 4.3.0 to 4.3.1
@@ -1,9 +0,6 @@ | ||
import { EnvMap } from './docker-command-inputs'; | ||
import { CommonDockerCommandInputs } from './common-inputs'; | ||
export declare type ExecContainerInputs = { | ||
tty: boolean; | ||
containerNameOrId: string; | ||
command: string; | ||
envMapping?: EnvMap | undefined; | ||
executionEnv?: Record<string, string> | undefined; | ||
}; | ||
export declare function containerExec({ tty, containerNameOrId, command, envMapping, executionEnv, }: ExecContainerInputs): Promise<import("@augment-vir/node-js").ShellOutput>; | ||
extraDockerInputs?: ReadonlyArray<string>; | ||
} & CommonDockerCommandInputs; | ||
export declare function containerExec(inputs: ExecContainerInputs): Promise<import("@augment-vir/node-js").ShellOutput>; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.containerExec = void 0; | ||
const node_js_1 = require("@augment-vir/node-js"); | ||
const docker_command_inputs_1 = require("./docker-command-inputs"); | ||
async function containerExec({ tty, containerNameOrId, command, envMapping, executionEnv, }) { | ||
const envFlags = (0, docker_command_inputs_1.makeEnvFlags)(envMapping); | ||
const ttyFlag = tty ? '-t' : ''; | ||
const fullCommand = (0, docker_command_inputs_1.combineCommandAndFlags)([ | ||
const common_inputs_1 = require("./common-inputs"); | ||
async function containerExec(inputs) { | ||
const ttyFlag = inputs.tty ? '-t' : ''; | ||
return await (0, common_inputs_1.runDockerCommandWithCommonInputs)(inputs, [ | ||
'docker', | ||
'exec', | ||
ttyFlag, | ||
envFlags, | ||
containerNameOrId, | ||
command, | ||
]); | ||
return await (0, node_js_1.runShellCommand)(fullCommand, { | ||
env: executionEnv, | ||
rejectOnError: true, | ||
}); | ||
} | ||
exports.containerExec = containerExec; |
@@ -6,3 +6,4 @@ export declare type CopyToContainerInputs = { | ||
containerNameOrId: string; | ||
extraDockerInputs?: ReadonlyArray<string>; | ||
}; | ||
export declare function copyToContainer({ containerAbsolutePath, isDir, hostPath, containerNameOrId, }: CopyToContainerInputs): Promise<void>; | ||
export declare function copyToContainer({ containerAbsolutePath, isDir, hostPath, containerNameOrId, extraDockerInputs, }: CopyToContainerInputs): Promise<void>; |
@@ -5,7 +5,8 @@ "use strict"; | ||
const node_js_1 = require("@augment-vir/node-js"); | ||
async function copyToContainer({ containerAbsolutePath, isDir, hostPath, containerNameOrId, }) { | ||
async function copyToContainer({ containerAbsolutePath, isDir, hostPath, containerNameOrId, extraDockerInputs = [], }) { | ||
const suffix = isDir ? '/.' : ''; | ||
const fullHostPath = `${hostPath}${suffix}`; | ||
await (0, node_js_1.runShellCommand)(`docker cp '${fullHostPath}' '${containerNameOrId}:${containerAbsolutePath}'`, { rejectOnError: true }); | ||
const extraInputs = extraDockerInputs.join(' '); | ||
await (0, node_js_1.runShellCommand)(`docker cp ${extraInputs} '${fullHostPath}' '${containerNameOrId}:${containerAbsolutePath}'`, { rejectOnError: true }); | ||
} | ||
exports.copyToContainer = copyToContainer; |
@@ -0,4 +1,9 @@ | ||
export declare enum VolumeMappingType { | ||
cached = "cached", | ||
delegated = "delegated" | ||
} | ||
export declare type VolumeMap = { | ||
hostAbsolutePath: string; | ||
containerAbsolutePath: string; | ||
type?: VolumeMappingType | undefined; | ||
}; | ||
@@ -5,0 +10,0 @@ export declare function makeVolumeFlags(volumeMapping?: ReadonlyArray<VolumeMap>): string; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.combineCommandAndFlags = exports.makeEnvFlags = exports.makePortMapFlags = exports.makeVolumeFlags = void 0; | ||
exports.combineCommandAndFlags = exports.makeEnvFlags = exports.makePortMapFlags = exports.makeVolumeFlags = exports.VolumeMappingType = void 0; | ||
const common_1 = require("@augment-vir/common"); | ||
var VolumeMappingType; | ||
(function (VolumeMappingType) { | ||
VolumeMappingType["cached"] = "cached"; | ||
VolumeMappingType["delegated"] = "delegated"; | ||
})(VolumeMappingType = exports.VolumeMappingType || (exports.VolumeMappingType = {})); | ||
function makeVolumeFlags(volumeMapping) { | ||
@@ -9,4 +14,5 @@ if (!volumeMapping) { | ||
} | ||
const parts = volumeMapping.map((volumeMap) => { | ||
return `-v '${volumeMap.hostAbsolutePath}':'${volumeMap.containerAbsolutePath}'`; | ||
const parts = volumeMapping.map((volume) => { | ||
const mountType = volume.type ? `:${volume.type}` : ''; | ||
return `-v '${volume.hostAbsolutePath}':'${volume.containerAbsolutePath}'${mountType}`; | ||
}); | ||
@@ -13,0 +19,0 @@ return parts.join(' '); |
@@ -34,3 +34,3 @@ "use strict"; | ||
if (containerInfo && !containerInfo.State.Running) { | ||
// fully remove the container | ||
// fully remove the container first | ||
await (0, kill_container_1.killContainer)(containerNameOrId); | ||
@@ -37,0 +37,0 @@ } |
@@ -1,1 +0,1 @@ | ||
export declare function killContainer(containerNameOrId: string): Promise<void>; | ||
export declare function killContainer(containerNameOrId: string, keepContainer?: boolean): Promise<void>; |
@@ -5,5 +5,6 @@ "use strict"; | ||
const node_js_1 = require("@augment-vir/node-js"); | ||
async function killContainer(containerNameOrId) { | ||
await (0, node_js_1.runShellCommand)(`docker kill '${containerNameOrId}'; docker rm '${containerNameOrId}'`); | ||
async function killContainer(containerNameOrId, keepContainer) { | ||
const removeContainerCommand = keepContainer ? '' : `docker rm '${containerNameOrId}'`; | ||
await (0, node_js_1.runShellCommand)(`docker kill '${containerNameOrId}'; ${removeContainerCommand}`); | ||
} | ||
exports.killContainer = killContainer; |
@@ -0,1 +1,2 @@ | ||
import { CommonDockerCommandInputs } from './common-inputs'; | ||
import { EnvMap, PortMap, VolumeMap } from './docker-command-inputs'; | ||
@@ -13,3 +14,5 @@ export declare type RunContainerInputs = { | ||
removeWhenDone?: boolean; | ||
}; | ||
export declare function runContainer({ containerName, imageName, detach, command, portMapping, volumeMapping, envMapping, executionEnv, enableLogging, removeWhenDone, }: RunContainerInputs): Promise<void>; | ||
extraDockerInputs?: ReadonlyArray<string>; | ||
useCurrentUser?: boolean; | ||
} & CommonDockerCommandInputs; | ||
export declare function runContainer(inputs: RunContainerInputs): Promise<void>; |
@@ -5,41 +5,27 @@ "use strict"; | ||
const node_js_1 = require("@augment-vir/node-js"); | ||
const common_inputs_1 = require("./common-inputs"); | ||
const docker_command_inputs_1 = require("./docker-command-inputs"); | ||
const is_container_running_1 = require("./is-container-running"); | ||
const kill_container_1 = require("./kill-container"); | ||
async function runContainer({ containerName, imageName, detach, command, portMapping, volumeMapping, envMapping, executionEnv, enableLogging, removeWhenDone, }) { | ||
try { | ||
const portMapFlags = (0, docker_command_inputs_1.makePortMapFlags)(portMapping); | ||
const envFlags = (0, docker_command_inputs_1.makeEnvFlags)(envMapping); | ||
const detachFlag = detach ? '-d' : ''; | ||
const containerNameFlag = containerName ? `--name='${containerName}'` : ''; | ||
const volumeMapFlags = (0, docker_command_inputs_1.makeVolumeFlags)(volumeMapping); | ||
const rmFlag = removeWhenDone ? '--rm' : ''; | ||
const fullCommand = (0, docker_command_inputs_1.combineCommandAndFlags)([ | ||
'docker', | ||
'run', | ||
portMapFlags, | ||
volumeMapFlags, | ||
envFlags, | ||
rmFlag, | ||
detachFlag, | ||
containerNameFlag, | ||
imageName, | ||
command, | ||
]); | ||
const nameLog = containerName ? ` with name "${containerName}"` : ''; | ||
node_js_1.logIf.info(enableLogging, `Running "${imageName}" container${nameLog}...`); | ||
await (0, node_js_1.runShellCommand)(fullCommand, { | ||
env: executionEnv, | ||
rejectOnError: true, | ||
}); | ||
if (removeWhenDone) { | ||
await (0, kill_container_1.killContainer)(containerName); | ||
await (0, is_container_running_1.waitForContainerToBeRemoved)(containerName); | ||
} | ||
async function runContainer(inputs) { | ||
const portMapFlags = (0, docker_command_inputs_1.makePortMapFlags)(inputs.portMapping); | ||
const detachFlag = inputs.detach ? '-d' : ''; | ||
const volumeMapFlags = (0, docker_command_inputs_1.makeVolumeFlags)(inputs.volumeMapping); | ||
const rmFlag = inputs.removeWhenDone ? '--rm' : ''; | ||
const userFlag = inputs.useCurrentUser ? '--user "$(id -u)":"$(id -g)"' : ''; | ||
node_js_1.logIf.info(inputs.enableLogging, `Running "${inputs.imageName}" container with name "${inputs.containerName}"...`); | ||
await (0, common_inputs_1.runDockerCommandWithCommonInputs)(inputs, [ | ||
'run', | ||
portMapFlags, | ||
volumeMapFlags, | ||
userFlag, | ||
rmFlag, | ||
detachFlag, | ||
inputs.imageName, | ||
]); | ||
if (inputs.removeWhenDone) { | ||
await (0, kill_container_1.killContainer)(inputs.containerName); | ||
await (0, is_container_running_1.waitForContainerToBeRemoved)(inputs.containerName); | ||
} | ||
catch (error) { | ||
await (0, kill_container_1.killContainer)(containerName); | ||
throw error; | ||
} | ||
} | ||
exports.runContainer = runContainer; |
{ | ||
"name": "@augment-vir/docker", | ||
"version": "4.3.0", | ||
"version": "4.3.1", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "author": { |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
17548
24
372
2