docker-compose/index.js
2017-06-10 23:58:22 +02:00

141 lines
2.6 KiB
JavaScript

'use strict';
const { promisify } = require('util');
const exec = promisify(require('child_process').exec);
const logger = require('./lib/log');
const logStandards = function (standards) {
if (standards.stdout.length > 0) {
logger.info(standards.stdout);
}
if (standards.stderr) {
logger.warn(standards.stderr);
}
};
/**
* @param {object} options
* @param {boolean} options.log
* @param {cwd} options.cwd
*/
const up = function (options) {
return new Promise((resolve, reject) => {
const cwd = options.cwd;
exec('docker-compose up -d', { cwd }).then(
standards => {
if (options.log) {
logStandards(standards);
}
return resolve();
},
err => {
logger.error(err.message);
return reject(err);
}
);
});
};
/**
* @param {object} options
* @param {boolean} options.log
* @param {cwd} options.cwd
*/
const down = function (options) {
return new Promise((resolve, reject) => {
const cwd = options.cwd;
exec('docker-compose down', { cwd }).then(
standards => {
if (options.log) {
logStandards(standards);
}
return resolve();
},
err => {
logger.error(err.message);
return reject(err);
}
);
});
};
/**
* @param {object} options
* @param {boolean} options.log
* @param {cwd} options.cwd
*/
const stop = function (options) {
return new Promise((resolve, reject) => {
const cwd = options.cwd;
exec('docker-compose stop', { cwd }).then(
standards => {
if (options.log) {
logStandards(standards);
}
return resolve();
},
err => {
logger.error(err.message);
return reject(err);
}
);
});
};
/**
* @param {object} options
* @param {boolean} options.log
* @param {cwd} options.cwd
*/
const kill = function (options) {
return new Promise((resolve, reject) => {
const cwd = options.cwd;
exec('docker-compose kill', { cwd }).then(
standards => {
if (options.log) {
logStandards(standards);
}
return resolve();
},
err => {
logger.error(err.message);
return reject(err);
}
);
});
};
/**
* @param {object} options
* @param {boolean} options.log
* @param {cwd} options.cwd
*/
const rm = function (options) {
const cwd = options.cwd;
exec('docker-compose rm', { cwd }).then(
standards => {
if (options.log) {
logStandards(standards);
}
},
err => {
logger.error(err.message);
}
);
};
module.exports = { up, kill, down, stop, rm };