You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
3.4 KiB

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.logNewSection = logNewSection;
exports.ora = ora;
function _chalk() {
const data = _interopRequireDefault(require("chalk"));
_chalk = function () {
return data;
};
return data;
}
function _commander() {
const data = _interopRequireDefault(require("commander"));
_commander = function () {
return data;
};
return data;
}
function _ora() {
const data = _interopRequireDefault(require("ora"));
_ora = function () {
return data;
};
return data;
}
function _log() {
const data = _interopRequireDefault(require("../log"));
_log = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// eslint-disable-next-line no-console
const logReal = console.log;
// eslint-disable-next-line no-console
const infoReal = console.info;
// eslint-disable-next-line no-console
const warnReal = console.warn;
// eslint-disable-next-line no-console
const errorReal = console.error;
/**
* A custom ora spinner that sends the stream to stdout in CI, non-TTY, or expo's non-interactive flag instead of stderr (the default).
*
* @param options
* @returns
*/
function ora(options) {
const inputOptions = typeof options === 'string' ? {
text: options
} : options || {};
const disabled = _commander().default.nonInteractive || _log().default.isDebug;
const spinner = (0, _ora().default)({
// Ensure our non-interactive mode emulates CI mode.
isEnabled: !disabled,
// In non-interactive mode, send the stream to stdout so it prevents looking like an error.
stream: disabled ? process.stdout : process.stderr,
...inputOptions
});
const oraStart = spinner.start.bind(spinner);
const oraStop = spinner.stop.bind(spinner);
const oraStopAndPersist = spinner.stopAndPersist.bind(spinner);
const logWrap = (method, args) => {
oraStop();
method(...args);
spinner.start();
};
const wrapNativeLogs = () => {
// eslint-disable-next-line no-console
console.log = (...args) => logWrap(logReal, args);
// eslint-disable-next-line no-console
console.info = (...args) => logWrap(infoReal, args);
// eslint-disable-next-line no-console
console.warn = (...args) => logWrap(warnReal, args);
// eslint-disable-next-line no-console
console.error = (...args) => logWrap(errorReal, args);
};
const resetNativeLogs = () => {
// eslint-disable-next-line no-console
console.log = logReal;
// eslint-disable-next-line no-console
console.info = logReal;
// eslint-disable-next-line no-console
console.warn = warnReal;
// eslint-disable-next-line no-console
console.error = errorReal;
};
spinner.start = text => {
wrapNativeLogs();
return oraStart(text);
};
spinner.stopAndPersist = options => {
const result = oraStopAndPersist(options);
resetNativeLogs();
return result;
};
spinner.stop = () => {
const result = oraStop();
resetNativeLogs();
return result;
};
// Always make the central logging module aware of the current spinner
_log().default.setSpinner(spinner);
return spinner;
}
/**
* Create a unified section spinner.
*
* @param title
* @returns
*/
function logNewSection(title) {
const spinner = ora(_chalk().default.bold(title));
// Prevent the spinner from clashing with debug logs
spinner.start();
return spinner;
}
//# sourceMappingURL=ora.js.map