appium-gulp-plugins
Version:
Custom gulp plugins to be used across all appium modules
57 lines (48 loc) • 1.48 kB
JavaScript
;
const _ = require('lodash');
const { exec } = require('child_process');
const B = require('bluebird');
const { quote } = require('shell-quote');
// string interpolation
const interpolate = function interpolate (s, opts) {
return _.keys(opts).reduce(function replace (s, k) {
return s.replace(new RegExp(`\\$\\{\\s*${k}\\s*\\}`, 'g'), opts[k]);
}, s);
};
const translatePaths = function translatePaths (files, fileAliases) {
if (!_.isArray(files)) {
files = [files];
}
return _.flatten(files).map(function interpolateFileAliases (f) {
return interpolate(f, fileAliases);
});
};
const isVerbose = function isVerbose () {
return process.env.VERBOSE === '1';
};
const getTestReporter = function getTestReporter (opts) {
const isForceLogMode = parseInt(process.env._FORCE_LOGS, 10) === 1;
return isForceLogMode ? 'spec' : (process.env.REPORTER ? process.env.REPORTER : opts.testReporter);
};
const pExec = function pExec (cmd, args = [], opts = {}) {
return new B(function executeCmd (resolve, reject) {
exec(`${quote([cmd])} ${quote(args)}`, opts, function cb (err, stdout, stderr) { // eslint-disable-line promise/prefer-await-to-callbacks
if (err) {
err.stdout = stdout;
err.stderr = stderr;
return reject(err);
}
resolve({
stdout,
stderr,
});
});
});
};
module.exports = {
interpolate,
translatePaths,
isVerbose,
getTestReporter,
exec: pExec,
};