Merge branch 'master' of github.com:PDMLab/docker-compose

This commit is contained in:
Alexander Zeitler 2019-07-10 12:37:50 +02:00
commit cc9106a0b9
4 changed files with 39 additions and 7 deletions

4
index.d.ts vendored
View file

@ -18,11 +18,11 @@ export declare function restartOne(service: String, options: IDockerComposeOptio
export declare function rm(options: IDockerComposeOptions): Promise<IDockerComposeResult>;
export declare function exec(container: String, command: String, options: IDockerComposeOptions): Promise<IDockerComposeResult>;
export declare function exec(container: String, command: String | String[], options: IDockerComposeOptions): Promise<IDockerComposeResult>;
export declare function logs(services: String[], options: IDockerComposeLogOptions): Promise<IDockerComposeResult>;
export declare function run(service: String, command: String, options: IDockerComposeOptions): Promise<IDockerComposeResult>;
export declare function run(service: String, command: String | String[], options: IDockerComposeOptions): Promise<IDockerComposeResult>;
export declare function buildAll(options: IDockerComposeBuildOptions): Promise<IDockerComposeResult>;

View file

@ -180,7 +180,7 @@ const rm = function (options) {
/**
* Execute command in a running container
* @param {string} container container name
* @param {string} command command to execute
* @param {string|string[]} command command to execute
* @param {object} options
* @param {string} options.cwd
* @param {boolean} [options.log]
@ -191,7 +191,7 @@ const rm = function (options) {
* @return {object} std.out / std.err
*/
const exec = function (container, command, options) {
const args = command.split(/\s+/);
const args = Array.isArray(command) ? command : command.split(/\s+/);
return execCompose('exec', [ '-T', container ].concat(args), options);
};
@ -199,7 +199,7 @@ const exec = function (container, command, options) {
/**
* Run command
* @param {string} container container name
* @param {string} command command to execute
* @param {string|string[]} command command to execute
* @param {object} options
* @param {string} options.cwd
* @param {boolean} [options.log]
@ -210,7 +210,7 @@ const exec = function (container, command, options) {
* @return {object} std.out / std.err
*/
const run = function (container, command, options) {
const args = command.split(/\s+/);
const args = Array.isArray(command) ? command : command.split(/\s+/);
return execCompose('run', [ '-T', container ].concat(args), options);
};

View file

@ -1,4 +1,4 @@
<img src="https://img.shields.io/circleci/project/github/PDMLab/docker-compose.svg" /> <a href="https://join.slack.com/t/pdmlab-oss/shared_invite/enQtNjEyMjQ0MDY3NTczLTg1ZDc0YjQxMGE3MTcyYTdkODU1YjFmMTBiODE2ZTZiNDFkNjc1MWE4OTE4NWY0Y2YyMWYzYmNhZGY0NDAyYWY"><img src="https://img.shields.io/badge/Slack-join-green.svg?logo=slack" /></a>
<img src="https://img.shields.io/circleci/project/github/PDMLab/docker-compose.svg" /> <a href="https://join.slack.com/t/pdmlab-oss/shared_invite/enQtNjEyMjQ0MDY3NTczLTg1ZDc0YjQxMGE3MTcyYTdkODU1YjFmMTBiODE2ZTZiNDFkNjc1MWE4OTE4NWY0Y2YyMWYzYmNhZGY0NDAyYWY"><img src="https://img.shields.io/npm/dm/docker-compose.svg" /> <img src="https://img.shields.io/badge/Slack-join-green.svg?logo=slack" /></a>
# Manage Docker-Compose via Node.js

View file

@ -191,6 +191,38 @@ test('ensure run and exec are working', async assert => {
assert.end();
});
test('ensure run and exec with command defined as array are working', async assert => {
const checkOSID = (out, id) => {
// parse /etc/os-release contents
const re = /([\w,_]+)=(.*)/g;
let match = null;
const os = {};
while ((match = re.exec(out)) !== null) { // eslint-disable-line no-cond-assign
os[match[1]] = match[2];
}
assert.equals(os.ID, id);
};
const opts = { cwd: path.join(__dirname), log: false };
await compose.upAll(opts);
assert.true(await isContainerRunning('/compose_test_nginx'));
let std = await compose.exec('db', [ '/bin/sh', '-c', 'cat /etc/os-release' ], opts);
assert.false(std.err);
checkOSID(std.out, 'debian');
std = await compose.run('alpine', [ '/bin/sh', '-c', 'cat /etc/os-release' ], opts);
assert.false(std.err);
checkOSID(std.out, 'alpine');
assert.end();
});
test('build single service', async assert => {
const opts = {
cwd: path.join(__dirname),