UNPKG

appium-ios-simulator

Version:
98 lines (73 loc) 6.2 kB
'use strict'; var _regeneratorRuntime = require('babel-runtime/regenerator')['default']; var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default']; Object.defineProperty(exports, '__esModule', { value: true }); var _teen_process = require('teen_process'); var _bluebird = require('bluebird'); var _bluebird2 = _interopRequireDefault(_bluebird); var _logger = require('./logger'); var _logger2 = _interopRequireDefault(_logger); // tails a file, promise resolves when input string is written to file function tailUntil(filePath, until) { var timeout = arguments.length <= 2 || arguments[2] === undefined ? 5000 : arguments[2]; var proc, startDetector; return _regeneratorRuntime.async(function tailUntil$(context$1$0) { var _this = this; while (1) switch (context$1$0.prev = context$1$0.next) { case 0: proc = new _teen_process.SubProcess('tail', ['-f', '-n', '100', filePath]); startDetector = function startDetector(stdout) { return stdout.indexOf(until) > -1; }; context$1$0.next = 4; return _regeneratorRuntime.awrap(new _bluebird2['default'](function (resolve, reject) { var started = proc.start(startDetector); /* eslint-disable promise/prefer-await-to-then */ var timedout = _bluebird2['default'].delay(timeout).then(function () { return reject(new Error('Tailing file ' + filePath + ' failed after ' + timeout + 'ms')); }); /* eslint-enable */ _bluebird2['default'].race([started, timedout]).then(resolve)['catch'](reject); })['finally'](function callee$1$0() { return _regeneratorRuntime.async(function callee$1$0$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: if (!proc.isRunning) { context$2$0.next = 9; break; } context$2$0.prev = 1; context$2$0.next = 4; return _regeneratorRuntime.awrap(proc.stop()); case 4: context$2$0.next = 9; break; case 6: context$2$0.prev = 6; context$2$0.t0 = context$2$0['catch'](1); // there is not much we can do here, unfortunately, but log _logger2['default'].info('Stopping tail process failed: ' + context$2$0.t0.message); case 9: case 'end': return context$2$0.stop(); } }, null, _this, [[1, 6]]); })); case 4: return context$1$0.abrupt('return', context$1$0.sent); case 5: case 'end': return context$1$0.stop(); } }, null, this); } exports.tailUntil = tailUntil; // // for debugging // function consoleOut (...args) { // console.log(`>>> ${args}`); // eslint-disable-line no-console // } // proc.on('output', consoleOut); // no matter what, stop the tail process //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90YWlsLXVudGlsLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7NEJBQTJCLGNBQWM7O3dCQUMzQixVQUFVOzs7O3NCQUNSLFVBQVU7Ozs7O0FBRzFCLFNBQWUsU0FBUyxDQUFFLFFBQVEsRUFBRSxLQUFLO01BQUUsT0FBTyx5REFBRyxJQUFJO01BQ25ELElBQUksRUFRSixhQUFhOzs7Ozs7QUFSYixZQUFJLEdBQUcsNkJBQWUsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7O0FBUTVELHFCQUFhLEdBQUcsU0FBaEIsYUFBYSxDQUFJLE1BQU0sRUFBSztBQUM5QixpQkFBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ25DOzs7eUNBRVksMEJBQU0sVUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFLO0FBQ3RDLGNBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7OztBQUd4QyxjQUFJLFFBQVEsR0FBRyxzQkFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU07QUFDekMsbUJBQU8sTUFBTSxDQUFDLElBQUksS0FBSyxtQkFBaUIsUUFBUSxzQkFBaUIsT0FBTyxRQUFLLENBQUMsQ0FBQztXQUNoRixDQUFDLENBQUM7OztBQUdILGdDQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pELENBQUMsV0FBUSxDQUFDOzs7O3FCQUVMLElBQUksQ0FBQyxTQUFTOzs7Ozs7O2lEQUVSLElBQUksQ0FBQyxJQUFJLEVBQUU7Ozs7Ozs7Ozs7O0FBR2pCLG9DQUFJLElBQUksb0NBQWtDLGVBQUksT0FBTyxDQUFHLENBQUM7Ozs7Ozs7U0FHOUQsQ0FBQzs7Ozs7Ozs7OztDQUNIOztRQUVRLFNBQVMsR0FBVCxTQUFTIiwiZmlsZSI6ImxpYi90YWlsLXVudGlsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3ViUHJvY2VzcyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcblxuLy8gdGFpbHMgYSBmaWxlLCBwcm9taXNlIHJlc29sdmVzIHdoZW4gaW5wdXQgc3RyaW5nIGlzIHdyaXR0ZW4gdG8gZmlsZVxuYXN5bmMgZnVuY3Rpb24gdGFpbFVudGlsIChmaWxlUGF0aCwgdW50aWwsIHRpbWVvdXQgPSA1MDAwKSB7XG4gIGxldCBwcm9jID0gbmV3IFN1YlByb2Nlc3MoJ3RhaWwnLCBbJy1mJywgJy1uJywgJzEwMCcsIGZpbGVQYXRoXSk7XG5cbiAgLy8gLy8gZm9yIGRlYnVnZ2luZ1xuICAvLyBmdW5jdGlvbiBjb25zb2xlT3V0ICguLi5hcmdzKSB7XG4gIC8vICAgY29uc29sZS5sb2coYD4+PiAke2FyZ3N9YCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAvLyB9XG4gIC8vIHByb2Mub24oJ291dHB1dCcsIGNvbnNvbGVPdXQpO1xuXG4gIGxldCBzdGFydERldGVjdG9yID0gKHN0ZG91dCkgPT4ge1xuICAgIHJldHVybiBzdGRvdXQuaW5kZXhPZih1bnRpbCkgPiAtMTtcbiAgfTtcblxuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxldCBzdGFydGVkID0gcHJvYy5zdGFydChzdGFydERldGVjdG9yKTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLXRoZW4gKi9cbiAgICBsZXQgdGltZWRvdXQgPSBCLmRlbGF5KHRpbWVvdXQpLnRoZW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoYFRhaWxpbmcgZmlsZSAke2ZpbGVQYXRofSBmYWlsZWQgYWZ0ZXIgJHt0aW1lb3V0fW1zYCkpO1xuICAgIH0pO1xuICAgIC8qIGVzbGludC1lbmFibGUgKi9cblxuICAgIEIucmFjZShbc3RhcnRlZCwgdGltZWRvdXRdKS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdCk7XG4gIH0pLmZpbmFsbHkoYXN5bmMgKCkgPT4ge1xuICAgIC8vIG5vIG1hdHRlciB3aGF0LCBzdG9wIHRoZSB0YWlsIHByb2Nlc3NcbiAgICBpZiAocHJvYy5pc1J1bm5pbmcpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHByb2Muc3RvcCgpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIHRoZXJlIGlzIG5vdCBtdWNoIHdlIGNhbiBkbyBoZXJlLCB1bmZvcnR1bmF0ZWx5LCBidXQgbG9nXG4gICAgICAgIGxvZy5pbmZvKGBTdG9wcGluZyB0YWlsIHByb2Nlc3MgZmFpbGVkOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCB7IHRhaWxVbnRpbCB9O1xuIl0sInNvdXJjZVJvb3QiOiIuLi8uLiJ9