UNPKG

28.3 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _promise;
8
9function _load_promise() {
10 return _promise = _interopRequireDefault(require('babel-runtime/core-js/promise'));
11}
12
13var _toConsumableArray2;
14
15function _load_toConsumableArray() {
16 return _toConsumableArray2 = _interopRequireDefault(require('babel-runtime/helpers/toConsumableArray'));
17}
18
19var _getIterator2;
20
21function _load_getIterator() {
22 return _getIterator2 = _interopRequireDefault(require('babel-runtime/core-js/get-iterator'));
23}
24
25var _regenerator;
26
27function _load_regenerator() {
28 return _regenerator = _interopRequireDefault(require('babel-runtime/regenerator'));
29}
30
31var _asyncToGenerator2;
32
33function _load_asyncToGenerator() {
34 return _asyncToGenerator2 = _interopRequireDefault(require('babel-runtime/helpers/asyncToGenerator'));
35}
36
37var checkForUpdateAsync = function () {
38 var _ref3 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)( /*#__PURE__*/(_regenerator || _load_regenerator()).default.mark(function _callee3() {
39 var _ref4, state, current, latest, message;
40
41 return (_regenerator || _load_regenerator()).default.wrap(function _callee3$(_context3) {
42 while (1) {
43 switch (_context3.prev = _context3.next) {
44 case 0:
45 _context3.next = 2;
46 return (_update || _load_update()).default.checkForUpdateAsync();
47
48 case 2:
49 _ref4 = _context3.sent;
50 state = _ref4.state;
51 current = _ref4.current;
52 latest = _ref4.latest;
53 message = void 0;
54 _context3.t0 = state;
55 _context3.next = _context3.t0 === 'up-to-date' ? 10 : _context3.t0 === 'out-of-date' ? 11 : _context3.t0 === 'ahead-of-published' ? 14 : 15;
56 break;
57
58 case 10:
59 return _context3.abrupt('break', 15);
60
61 case 11:
62 message = 'There is a new version of ' + (_package || _load_package()).default.name + ' available (' + latest + ').\nYou are currently using ' + (_package || _load_package()).default.name + ' ' + current + '\nRun `npm install -g ' + (_package || _load_package()).default.name + '` to get the latest version';
63 (_log || _load_log()).default.error((_chalk || _load_chalk()).default.green(message));
64 return _context3.abrupt('break', 15);
65
66 case 14:
67 return _context3.abrupt('break', 15);
68
69 case 15:
70 case 'end':
71 return _context3.stop();
72 }
73 }
74 }, _callee3, this);
75 }));
76
77 return function checkForUpdateAsync() {
78 return _ref3.apply(this, arguments);
79 };
80}();
81
82var writePathAsync = function () {
83 var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)( /*#__PURE__*/(_regenerator || _load_regenerator()).default.mark(function _callee4() {
84 var subCommand;
85 return (_regenerator || _load_regenerator()).default.wrap(function _callee4$(_context4) {
86 while (1) {
87 switch (_context4.prev = _context4.next) {
88 case 0:
89 subCommand = process.argv[2];
90
91 if (!(subCommand === 'prepare-detached-build')) {
92 _context4.next = 3;
93 break;
94 }
95
96 return _context4.abrupt('return');
97
98 case 3:
99 _context4.next = 5;
100 return (_xdl || _load_xdl()).Binaries.writePathToUserSettingsAsync();
101
102 case 5:
103 case 'end':
104 return _context4.stop();
105 }
106 }
107 }, _callee4, this);
108 }));
109
110 return function writePathAsync() {
111 return _ref5.apply(this, arguments);
112 };
113}();
114
115// This is the entry point of the CLI
116
117
118exports.run = run;
119
120var _progress;
121
122function _load_progress() {
123 return _progress = _interopRequireDefault(require('progress'));
124}
125
126var _lodash;
127
128function _load_lodash() {
129 return _lodash = _interopRequireDefault(require('lodash'));
130}
131
132var _bunyan;
133
134function _load_bunyan() {
135 return _bunyan = _interopRequireDefault(require('@expo/bunyan'));
136}
137
138var _chalk;
139
140function _load_chalk() {
141 return _chalk = _interopRequireDefault(require('chalk'));
142}
143
144var _glob;
145
146function _load_glob() {
147 return _glob = _interopRequireDefault(require('glob'));
148}
149
150var _fs = _interopRequireDefault(require('fs'));
151
152var _path = _interopRequireDefault(require('path'));
153
154var _simpleSpinner;
155
156function _load_simpleSpinner() {
157 return _simpleSpinner = _interopRequireDefault(require('@expo/simple-spinner'));
158}
159
160var _url = _interopRequireDefault(require('url'));
161
162var _codeFrame;
163
164function _load_codeFrame() {
165 return _codeFrame = require('@babel/code-frame');
166}
167
168var _commander;
169
170function _load_commander() {
171 return _commander = _interopRequireDefault(require('commander'));
172}
173
174var _commander2;
175
176function _load_commander2() {
177 return _commander2 = require('commander');
178}
179
180var _xdl;
181
182function _load_xdl() {
183 return _xdl = require('xdl');
184}
185
186var _accounts;
187
188function _load_accounts() {
189 return _accounts = require('./accounts');
190}
191
192var _log;
193
194function _load_log() {
195 return _log = _interopRequireDefault(require('./log'));
196}
197
198var _update;
199
200function _load_update() {
201 return _update = _interopRequireDefault(require('./update'));
202}
203
204var _urlOpts;
205
206function _load_urlOpts() {
207 return _urlOpts = _interopRequireDefault(require('./urlOpts'));
208}
209
210var _commonOptions;
211
212function _load_commonOptions() {
213 return _commonOptions = _interopRequireDefault(require('./commonOptions'));
214}
215
216var _package;
217
218function _load_package() {
219 return _package = _interopRequireDefault(require('../package.json'));
220}
221
222function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
223
224if (process.env.NODE_ENV === 'development') {
225 require('source-map-support').install();
226}
227
228// The following prototyped functions are not used here, but within in each file found in `./commands`
229// Extending commander to easily add more options to certain command line arguments
230(_commander2 || _load_commander2()).Command.prototype.urlOpts = function () {
231 (_urlOpts || _load_urlOpts()).default.addOptions(this);
232 return this;
233};
234
235(_commander2 || _load_commander2()).Command.prototype.allowOffline = function () {
236 this.option('--offline', 'Allows this command to run while offline');
237 return this;
238};
239
240// asyncAction is a wrapper for all commands/actions to be executed after commander is done
241// parsing the command input
242(_commander2 || _load_commander2()).Command.prototype.asyncAction = function (asyncFn, skipUpdateCheck) {
243 var _this = this;
244
245 (0, (_commonOptions || _load_commonOptions()).default)(this);
246 return this.action(function () {
247 var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)( /*#__PURE__*/(_regenerator || _load_regenerator()).default.mark(function _callee() {
248 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
249 args[_key] = arguments[_key];
250 }
251
252 var options;
253 return (_regenerator || _load_regenerator()).default.wrap(function _callee$(_context) {
254 while (1) {
255 switch (_context.prev = _context.next) {
256 case 0:
257 if (skipUpdateCheck) {
258 _context.next = 8;
259 break;
260 }
261
262 _context.prev = 1;
263 _context.next = 4;
264 return checkForUpdateAsync();
265
266 case 4:
267 _context.next = 8;
268 break;
269
270 case 6:
271 _context.prev = 6;
272 _context.t0 = _context['catch'](1);
273
274 case 8:
275 _context.prev = 8;
276 options = (_lodash || _load_lodash()).default.last(args);
277
278 if (options.output === 'raw') {
279 (_log || _load_log()).default.config.raw = true;
280 }
281 if (options.offline) {
282 (_xdl || _load_xdl()).Config.offline = true;
283 }
284 _context.next = 14;
285 return asyncFn.apply(undefined, args);
286
287 case 14:
288 // After a command, flush the analytics queue so the program will not have any active timers
289 // This allows node js to exit immediately
290 (_xdl || _load_xdl()).Analytics.flush();
291 _context.next = 21;
292 break;
293
294 case 17:
295 _context.prev = 17;
296 _context.t1 = _context['catch'](8);
297
298 // TODO: Find better ways to consolidate error messages
299 if (_context.t1._isCommandError) {
300 (_log || _load_log()).default.error(_context.t1.message);
301 } else if (_context.t1._isApiError) {
302 (_log || _load_log()).default.error((_chalk || _load_chalk()).default.red(_context.t1.message));
303 } else if (_context.t1.isXDLError) {
304 (_log || _load_log()).default.error(_context.t1.message);
305 } else {
306 (_log || _load_log()).default.error(_context.t1.message);
307 // TODO: Is there a better way to do this? EXPO_DEBUG needs to be set to view the stack trace
308 if (process.env.EXPO_DEBUG) {
309 (_log || _load_log()).default.error((_chalk || _load_chalk()).default.gray(_context.t1.stack));
310 } else {
311 (_log || _load_log()).default.error((_chalk || _load_chalk()).default.grey('Set EXPO_DEBUG=true in your env to view the stack trace.'));
312 }
313 }
314
315 process.exit(1);
316
317 case 21:
318 case 'end':
319 return _context.stop();
320 }
321 }
322 }, _callee, _this, [[1, 6], [8, 17]]);
323 }));
324
325 return function () {
326 return _ref.apply(this, arguments);
327 };
328 }());
329};
330
331// asyncActionProjectDir captures the projectDirectory from the command line,
332// setting it to cwd if it is not provided.
333// Commands such as `start` and `publish` use this.
334// It does several things:
335// - Everything in asyncAction
336// - Checks if the user is logged in or out
337// - Checks for updates
338// - Attaches the bundling logger
339// - Checks if the project directory is valid or not
340// - Runs AsyncAction with the projectDir as an argument
341(_commander2 || _load_commander2()).Command.prototype.asyncActionProjectDir = function (asyncFn, skipProjectValidation, skipAuthCheck) {
342 var _this2 = this;
343
344 return this.asyncAction(function () {
345 var _ref2 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)( /*#__PURE__*/(_regenerator || _load_regenerator()).default.mark(function _callee2(projectDir) {
346 for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
347 args[_key2 - 1] = arguments[_key2];
348 }
349
350 var opts, pathToConfig, logLines, logStackTrace, logWithLevel, bar, packagerLogsStream, status;
351 return (_regenerator || _load_regenerator()).default.wrap(function _callee2$(_context2) {
352 while (1) {
353 switch (_context2.prev = _context2.next) {
354 case 0:
355 opts = args[0];
356
357 if (!(!skipAuthCheck && !opts.parent.nonInteractive && !opts.offline)) {
358 _context2.next = 4;
359 break;
360 }
361
362 _context2.next = 4;
363 return (0, (_accounts || _load_accounts()).loginOrRegisterIfLoggedOut)();
364
365 case 4:
366 if (skipAuthCheck) {
367 _context2.next = 7;
368 break;
369 }
370
371 _context2.next = 7;
372 return (_xdl || _load_xdl()).User.ensureLoggedInAsync();
373
374 case 7:
375
376 if (!projectDir) {
377 projectDir = process.cwd();
378 } else {
379 projectDir = _path.default.resolve(process.cwd(), projectDir);
380 }
381
382 if (!opts.config) {
383 _context2.next = 13;
384 break;
385 }
386
387 pathToConfig = _path.default.resolve(process.cwd(), opts.config);
388
389 if (_fs.default.existsSync(pathToConfig)) {
390 _context2.next = 12;
391 break;
392 }
393
394 throw new Error('File at provide config path does not exist: ' + pathToConfig);
395
396 case 12:
397 (_xdl || _load_xdl()).ProjectUtils.setCustomConfigPath(projectDir, pathToConfig);
398
399 case 13:
400 logLines = function logLines(msg, logFn) {
401 if (typeof msg === 'string') {
402 var _iteratorNormalCompletion = true;
403 var _didIteratorError = false;
404 var _iteratorError = undefined;
405
406 try {
407 for (var _iterator = (0, (_getIterator2 || _load_getIterator()).default)(msg.split('\n')), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
408 var line = _step.value;
409
410 logFn(line);
411 }
412 } catch (err) {
413 _didIteratorError = true;
414 _iteratorError = err;
415 } finally {
416 try {
417 if (!_iteratorNormalCompletion && _iterator.return) {
418 _iterator.return();
419 }
420 } finally {
421 if (_didIteratorError) {
422 throw _iteratorError;
423 }
424 }
425 }
426 } else {
427 logFn(msg);
428 }
429 };
430
431 logStackTrace = function logStackTrace(chunk, logFn, nestedLogFn) {
432 var traceInfo = void 0;
433 try {
434 traceInfo = JSON.parse(chunk.msg);
435 } catch (e) {
436 return logFn(chunk.msg);
437 }
438
439 var _traceInfo = traceInfo,
440 message = _traceInfo.message,
441 stack = _traceInfo.stack;
442
443 (_log || _load_log()).default.addNewLineIfNone();
444 logFn((_chalk || _load_chalk()).default.bold(message));
445
446 var isLibraryFrame = function isLibraryFrame(line) {
447 return line.startsWith('node_modules');
448 };
449
450 var stackFrames = (_lodash || _load_lodash()).default.compact(stack.split('\n'));
451 var lastAppCodeFrameIndex = (_lodash || _load_lodash()).default.findLastIndex(stackFrames, function (line) {
452 return !isLibraryFrame(line);
453 });
454 var lastFrameIndexToLog = Math.min(stackFrames.length - 1, lastAppCodeFrameIndex + 2 // show max two more frames after last app code frame
455 );
456 var unloggedFrames = stackFrames.length - lastFrameIndexToLog;
457
458 // If we're only going to exclude one frame, just log them all
459 if (unloggedFrames === 1) {
460 lastFrameIndexToLog = stackFrames.length - 1;
461 unloggedFrames = 0;
462 }
463
464 for (var i = 0; i <= lastFrameIndexToLog; i++) {
465 var line = stackFrames[i];
466 if (!line) {
467 continue;
468 } else if (line.match(/react-native\/.*YellowBox.js/)) {
469 continue;
470 }
471
472 if (line.startsWith('node_modules')) {
473 nestedLogFn('- ' + line);
474 } else {
475 nestedLogFn('* ' + line);
476 }
477 }
478
479 if (unloggedFrames > 0) {
480 nestedLogFn('- ... ' + unloggedFrames + ' more stack frames from framework internals');
481 }
482
483 (_log || _load_log()).default.printNewLineBeforeNextLog();
484 };
485
486 logWithLevel = function logWithLevel(chunk) {
487 if (!chunk.msg) {
488 return;
489 }
490 if (chunk.level <= (_bunyan || _load_bunyan()).default.INFO) {
491 if (chunk.includesStack) {
492 logStackTrace(chunk, (_log || _load_log()).default, (_log || _load_log()).default.nested);
493 } else {
494 logLines(chunk.msg, (_log || _load_log()).default);
495 }
496 } else if (chunk.level === (_bunyan || _load_bunyan()).default.WARN) {
497 if (chunk.includesStack) {
498 logStackTrace(chunk, (_log || _load_log()).default.warn, (_log || _load_log()).default.nestedWarn);
499 } else {
500 logLines(chunk.msg, (_log || _load_log()).default.warn);
501 }
502 } else {
503 if (chunk.includesStack) {
504 logStackTrace(chunk, (_log || _load_log()).default.error, (_log || _load_log()).default.nestedError);
505 } else {
506 logLines(chunk.msg, (_log || _load_log()).default.error);
507 }
508 }
509 };
510
511 bar = void 0;
512 packagerLogsStream = new (_xdl || _load_xdl()).PackagerLogsStream({
513 projectRoot: projectDir,
514 onStartBuildBundle: function onStartBuildBundle() {
515 bar = new (_progress || _load_progress()).default('Building JavaScript bundle [:bar] :percent', {
516 total: 100,
517 clear: true,
518 complete: '=',
519 incomplete: ' '
520 });
521
522 (_log || _load_log()).default.setBundleProgressBar(bar);
523 },
524 onProgressBuildBundle: function onProgressBuildBundle(percent) {
525 if (!bar || bar.complete) return;
526 var ticks = percent - bar.curr;
527 ticks > 0 && bar.tick(ticks);
528 },
529 onFinishBuildBundle: function onFinishBuildBundle(err, startTime, endTime) {
530 if (bar && !bar.complete) {
531 bar.tick(100 - bar.curr);
532 }
533
534 if (bar) {
535 (_log || _load_log()).default.setBundleProgressBar(null);
536 bar = null;
537
538 if (err) {
539 (0, (_log || _load_log()).default)((_chalk || _load_chalk()).default.red('Failed building JavaScript bundle.'));
540 } else {
541 (0, (_log || _load_log()).default)((_chalk || _load_chalk()).default.green('Finished building JavaScript bundle in ' + (endTime - startTime) + 'ms.'));
542 }
543 }
544 },
545 updateLogs: function updateLogs(updater) {
546 var newLogChunks = updater([]);
547 newLogChunks.forEach(function (newLogChunk) {
548 logWithLevel(newLogChunk);
549 });
550 },
551 getSnippetForError: function getSnippetForError(error) {
552 if (!error.filename || !error.lineNumber || !error.column) {
553 return null;
554 }
555 var rawLines = _fs.default.readFileSync(error.filename, 'utf8');
556 var location = { start: { line: error.lineNumber, column: error.column + 1 } };
557 return (0, (_codeFrame || _load_codeFrame()).codeFrameColumns)(rawLines, location, {
558 highlightCode: true
559 });
560 }
561 });
562
563 // needed for validation logging to function
564
565 (_xdl || _load_xdl()).ProjectUtils.attachLoggerStream(projectDir, {
566 stream: {
567 write: function write(chunk) {
568 if (chunk.tag === 'device') {
569 logWithLevel(chunk);
570 }
571 }
572 },
573 type: 'raw'
574 });
575
576 // The existing CLI modules only pass one argument to this function, so skipProjectValidation
577 // will be undefined in most cases. we can explicitly pass a truthy value here to avoid
578 // validation (eg for init)
579 //
580 // If the packager/manifest server is running and healthy, there is no need
581 // to rerun Doctor because the directory was already checked previously
582 // This is relevant for command such as `send`
583 _context2.t0 = !skipProjectValidation;
584
585 if (!_context2.t0) {
586 _context2.next = 25;
587 break;
588 }
589
590 _context2.next = 23;
591 return (_xdl || _load_xdl()).Project.currentStatus(projectDir);
592
593 case 23:
594 _context2.t1 = _context2.sent;
595 _context2.t0 = _context2.t1 !== 'running';
596
597 case 25:
598 if (!_context2.t0) {
599 _context2.next = 35;
600 break;
601 }
602
603 (0, (_log || _load_log()).default)('Making sure project is set up correctly...');
604 (_simpleSpinner || _load_simpleSpinner()).default.start();
605 // validate that this is a good projectDir before we try anything else
606
607 _context2.next = 30;
608 return (_xdl || _load_xdl()).Doctor.validateLowLatencyAsync(projectDir);
609
610 case 30:
611 status = _context2.sent;
612
613 if (!(status === (_xdl || _load_xdl()).Doctor.FATAL)) {
614 _context2.next = 33;
615 break;
616 }
617
618 throw new Error('There is an error with your project. See above logs for information.');
619
620 case 33:
621 (_simpleSpinner || _load_simpleSpinner()).default.stop();
622 (0, (_log || _load_log()).default)('Your project looks good!');
623
624 case 35:
625 return _context2.abrupt('return', asyncFn.apply(undefined, [projectDir].concat(args)));
626
627 case 36:
628 case 'end':
629 return _context2.stop();
630 }
631 }
632 }, _callee2, _this2);
633 }));
634
635 return function (_x) {
636 return _ref2.apply(this, arguments);
637 };
638 }());
639};
640
641function runAsync(programName) {
642 try {
643 // Setup analytics
644 (_xdl || _load_xdl()).Analytics.setSegmentNodeKey('vGu92cdmVaggGA26s3lBX6Y5fILm8SQ7');
645 (_xdl || _load_xdl()).Analytics.setVersionName((_package || _load_package()).default.version);
646 _registerLogs();
647
648 if (process.env.SERVER_URL) {
649 var serverUrl = process.env.SERVER_URL;
650 if (!serverUrl.startsWith('http')) {
651 serverUrl = 'http://' + serverUrl;
652 }
653 var parsedUrl = _url.default.parse(serverUrl);
654 (_xdl || _load_xdl()).Config.api.host = parsedUrl.hostname;
655 (_xdl || _load_xdl()).Config.api.port = parsedUrl.port;
656 }
657
658 (_xdl || _load_xdl()).Config.developerTool = (_package || _load_package()).default.name;
659
660 // Setup our commander instance
661 (_commander || _load_commander()).default.name = programName;
662 (_commander || _load_commander()).default.version((_package || _load_package()).default.version).option('-o, --output [format]', 'Output format. pretty (default), raw').option('--non-interactive', 'Fail, if an interactive prompt would be required to continue. Enabled by default if stdin is not a TTY.');
663
664 // Load each module found in ./commands by 'registering' it with our commander instance
665 var files = (_lodash || _load_lodash()).default.uniqBy([].concat((0, (_toConsumableArray2 || _load_toConsumableArray()).default)(programName === 'exp' ? (_glob || _load_glob()).default.sync('exp_commands/*.js', { cwd: __dirname }) : (_glob || _load_glob()).default.sync('expo_commands/*.js', { cwd: __dirname })), (0, (_toConsumableArray2 || _load_toConsumableArray()).default)((_glob || _load_glob()).default.sync('commands/*.js', { cwd: __dirname }))), _path.default.basename);
666 (_lodash || _load_lodash()).default.sortBy(files, _path.default.basename).forEach(function (file) {
667 var commandModule = require('./' + file);
668 if (typeof commandModule === 'function') {
669 commandModule((_commander || _load_commander()).default);
670 } else if (typeof commandModule.default === 'function') {
671 commandModule.default((_commander || _load_commander()).default);
672 } else {
673 (_log || _load_log()).default.error('\'' + file + '.js\' is not a properly formatted command.');
674 }
675 });
676
677 if (process.env.EXPO_DEBUG) {
678 (_glob || _load_glob()).default.sync('debug_commands/*.js', {
679 cwd: __dirname
680 }).forEach(function (file) {
681 require('./' + file)((_commander || _load_commander()).default);
682 });
683 }
684
685 var subCommand = process.argv[2];
686 var argv = process.argv.filter(function (arg) {
687 // Remove deprecated `--github` option here in order to fallback to password login/signup.
688 if (subCommand === 'login' && arg === '--github') {
689 (_log || _load_log()).default.nestedWarn('GitHub login is not currently available.\nPlease log in with your Expo account.');
690 return false;
691 }
692 if (subCommand === 'register' && arg === '--github') {
693 (_log || _load_log()).default.nestedWarn('GitHub sign up is not currently available.');
694 return false;
695 }
696 return true;
697 });
698 (_commander || _load_commander()).default.parse(argv);
699
700 if (typeof (_commander || _load_commander()).default.nonInteractive === 'undefined') {
701 // Commander doesn't initialize boolean args with default values.
702 (_commander || _load_commander()).default.nonInteractive = !process.stdin.isTTY;
703 }
704
705 // Display a message if the user does not input a valid command
706 if (subCommand) {
707 var commands = [];
708 (_commander || _load_commander()).default.commands.forEach(function (command) {
709 commands.push(command['_name']);
710 var alias = command['_alias'];
711 if (alias) {
712 commands.push(alias);
713 }
714 });
715 if (!(_lodash || _load_lodash()).default.includes(commands, subCommand)) {
716 console.log('"' + subCommand + '" is not an ' + programName + ' command. See "' + programName + ' --help" for the full list of commands.');
717 }
718 } else {
719 (_commander || _load_commander()).default.help();
720 }
721 } catch (e) {
722 console.error(e);
723 throw e;
724 }
725}
726
727function _registerLogs() {
728 var stream = {
729 stream: {
730 write: function write(chunk) {
731 if (chunk.code) {
732 switch (chunk.code) {
733 case (_xdl || _load_xdl()).NotificationCode.START_LOADING:
734 (_simpleSpinner || _load_simpleSpinner()).default.start();
735 return;
736 case (_xdl || _load_xdl()).NotificationCode.STOP_LOADING:
737 (_simpleSpinner || _load_simpleSpinner()).default.stop();
738 return;
739 case (_xdl || _load_xdl()).NotificationCode.DOWNLOAD_CLI_PROGRESS:
740 return;
741 }
742 }
743
744 if (chunk.level === (_bunyan || _load_bunyan()).default.INFO) {
745 (0, (_log || _load_log()).default)(chunk.msg);
746 } else if (chunk.level === (_bunyan || _load_bunyan()).default.WARN) {
747 (_log || _load_log()).default.warn(chunk.msg);
748 } else if (chunk.level >= (_bunyan || _load_bunyan()).default.ERROR) {
749 (_log || _load_log()).default.error(chunk.msg);
750 }
751 }
752 },
753 type: 'raw'
754 };
755
756 (_xdl || _load_xdl()).Logger.notifications.addStream(stream);
757 (_xdl || _load_xdl()).Logger.global.addStream(stream);
758}
759
760function run(programName) {
761 (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)( /*#__PURE__*/(_regenerator || _load_regenerator()).default.mark(function _callee5() {
762 return (_regenerator || _load_regenerator()).default.wrap(function _callee5$(_context5) {
763 while (1) {
764 switch (_context5.prev = _context5.next) {
765 case 0:
766 _context5.next = 2;
767 return (_promise || _load_promise()).default.all([writePathAsync(), runAsync(programName)]);
768
769 case 2:
770 case 'end':
771 return _context5.stop();
772 }
773 }
774 }, _callee5, this);
775 }))().catch(function (e) {
776 console.error('Uncaught Error', e);
777 process.exit(1);
778 });
779}
780//# sourceMappingURL=__sourcemaps__/exp.js.map