UNPKG

appium-ios-simulator

Version:
72 lines (56 loc) 4.64 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); // 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; }; return context$1$0.abrupt('return', new _bluebird2['default'](function callee$1$0(resolve, reject) { var started, timedout; return _regeneratorRuntime.async(function callee$1$0$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: started = proc.start(startDetector); timedout = _bluebird2['default'].delay(timeout).then(function () { return reject('tailing file ' + filePath + ' failed after ' + timeout + 'ms'); }); context$2$0.next = 4; return _regeneratorRuntime.awrap(_bluebird2['default'].race([started, timedout])); case 4: resolve(); case 5: case 'end': return context$2$0.stop(); } }, null, _this); })['finally'](function () { // no matter what, stop the tail process proc.stop(); })); case 3: case 'end': return context$1$0.stop(); } }, null, this); } exports.tailUntil = tailUntil; // for debugging // function consoleOut (...args) { // console.log(`>>> ${args}`); // } // proc.on('output', consoleOut); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90YWlsLXVudGlsLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7NEJBQTJCLGNBQWM7O3dCQUMzQixVQUFVOzs7OztBQUd4QixTQUFlLFNBQVMsQ0FBRSxRQUFRLEVBQUUsS0FBSztNQUFFLE9BQU8seURBQUcsSUFBSTtNQUNuRCxJQUFJLEVBUUosYUFBYTs7Ozs7O0FBUmIsWUFBSSxHQUFHLDZCQUFlLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDOztBQVE1RCxxQkFBYSxHQUFHLFNBQWhCLGFBQWEsQ0FBSSxNQUFNLEVBQUs7QUFDOUIsaUJBQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNuQzs7NENBRU0sMEJBQU0sb0JBQU8sT0FBTyxFQUFFLE1BQU07Y0FDN0IsT0FBTyxFQUNQLFFBQVE7Ozs7QUFEUix1QkFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO0FBQ25DLHdCQUFRLEdBQUcsc0JBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFNO0FBQ3pDLHlCQUFPLE1BQU0sbUJBQWlCLFFBQVEsc0JBQWlCLE9BQU8sUUFBSyxDQUFDO2lCQUNyRSxDQUFDOztpREFFSSxzQkFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Ozs7QUFFakMsdUJBQU8sRUFBRSxDQUFDOzs7Ozs7O1NBQ1gsQ0FBQyxXQUFRLENBQUMsWUFBTTs7QUFFZixjQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYixDQUFDOzs7Ozs7O0NBQ0g7O1FBRVEsU0FBUyxHQUFULFNBQVMiLCJmaWxlIjoibGliL3RhaWwtdW50aWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuLy8gdGFpbHMgYSBmaWxlLCBwcm9taXNlIHJlc29sdmVzIHdoZW4gaW5wdXQgc3RyaW5nIGlzIHdyaXR0ZW4gdG8gZmlsZVxuYXN5bmMgZnVuY3Rpb24gdGFpbFVudGlsIChmaWxlUGF0aCwgdW50aWwsIHRpbWVvdXQgPSA1MDAwKSB7XG4gIGxldCBwcm9jID0gbmV3IFN1YlByb2Nlc3MoJ3RhaWwnLCBbJy1mJywgJy1uJywgJzEwMCcsIGZpbGVQYXRoXSk7XG5cbiAgLy8gZm9yIGRlYnVnZ2luZ1xuICAvLyBmdW5jdGlvbiBjb25zb2xlT3V0ICguLi5hcmdzKSB7XG4gIC8vICAgY29uc29sZS5sb2coYD4+PiAke2FyZ3N9YCk7XG4gIC8vIH1cbiAgLy8gcHJvYy5vbignb3V0cHV0JywgY29uc29sZU91dCk7XG5cbiAgbGV0IHN0YXJ0RGV0ZWN0b3IgPSAoc3Rkb3V0KSA9PiB7XG4gICAgcmV0dXJuIHN0ZG91dC5pbmRleE9mKHVudGlsKSA+IC0xO1xuICB9O1xuXG4gIHJldHVybiBuZXcgQihhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgbGV0IHN0YXJ0ZWQgPSBwcm9jLnN0YXJ0KHN0YXJ0RGV0ZWN0b3IpO1xuICAgIGxldCB0aW1lZG91dCA9IEIuZGVsYXkodGltZW91dCkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gcmVqZWN0KGB0YWlsaW5nIGZpbGUgJHtmaWxlUGF0aH0gZmFpbGVkIGFmdGVyICR7dGltZW91dH1tc2ApO1xuICAgIH0pO1xuXG4gICAgYXdhaXQgQi5yYWNlKFtzdGFydGVkLCB0aW1lZG91dF0pO1xuXG4gICAgcmVzb2x2ZSgpO1xuICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAvLyBubyBtYXR0ZXIgd2hhdCwgc3RvcCB0aGUgdGFpbCBwcm9jZXNzXG4gICAgcHJvYy5zdG9wKCk7XG4gIH0pO1xufVxuXG5leHBvcnQgeyB0YWlsVW50aWwgfTtcbiJdfQ==