UNPKG

xctest-client

Version:
95 lines (80 loc) 2.02 kB
'use strict'; const utils = require('macaca-utils'); const childProcess = require('child_process'); const _ = Object.assign({}, utils); _.exec = function(cmd, opts) { return new Promise((resolve, reject) => { childProcess.exec(cmd, _.merge({ maxBuffer: 1024 * 512 * 10, wrapArgs: false }, opts || {}), (err, stdout) => { if (err) { return reject(err); } resolve(_.trim(stdout)); }); }); }; _.sleep = function(ms) { return new Promise(function(resolve) { setTimeout(resolve, ms); }); }; _.retry = function(func, interval, num) { return new Promise((resolve, reject) => { func().then(resolve, err => { if (num > 0 || typeof num === 'undefined') { _.sleep(interval).then(() => { resolve(_.retry(func, interval, num - 1)); }); } else { reject(err); } }); }); }; _.spawn = function(/* command, args, options */) { var args = Array.prototype.slice.call(arguments); return new Promise((resolve, reject) => { var stdout = ''; var stderr = ''; var child = childProcess.spawn.apply(childProcess, args); child.on('error', error => { reject(error); }); child.stdout.on('data', data => { stdout += data; }); child.stderr.on('data', data => { stderr += data; }); child.on('close', code => { var error; if (code) { error = new Error(stderr); error.code = code; return reject(error); } resolve([stdout, stderr]); }); }); }; _.exec = function(cmd, opts) { return new Promise(function(resolve, reject) { childProcess.exec(cmd, _.merge({ maxBuffer: 1024 * 512, wrapArgs: false }, opts || {}), function(err, stdout) { if (err) { return reject(err); } resolve(_.trim(stdout)); }); }); }; _.parseSimDir = function(data) { const r = /BUILT_PRODUCTS_DIR=([\S]+)\s/g; const arr = r.exec(data); return arr[1]; }; module.exports = _;