UNPKG

react-native-integrate

Version:

Automate integration of additional code into React Native projects

208 lines (207 loc) 6.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.log = log; exports.logSuccess = logSuccess; exports.logMessage = logMessage; exports.logMessageGray = logMessageGray; exports.logWarning = logWarning; exports.logInfo = logInfo; exports.logError = logError; exports.logNote = logNote; exports.logIntro = logIntro; exports.logOutro = logOutro; exports.startSpinner = startSpinner; exports.updateSpinner = updateSpinner; exports.stopSpinner = stopSpinner; exports.multiselect = multiselect; exports.select = select; exports.confirm = confirm; exports.text = text; exports.summarize = summarize; exports.getLastLine = getLastLine; const prompts_1 = require("@clack/prompts"); const picocolors_1 = __importDefault(require("picocolors")); const progress_1 = require("./progress"); const waitInputToContinue_1 = require("./utils/waitInputToContinue"); function log(msg) { if (progress_1.progress.isActive) return; prompts_1.log.step(msg); } function logSuccess(msg) { const isProgressActive = progress_1.progress.isActive; if (isProgressActive) progress_1.progress.hide(); prompts_1.log.success(msg); if (isProgressActive) progress_1.progress.display(); } function logMessage(msg) { if (progress_1.progress.isActive) return; prompts_1.log.message('⦿ ' + msg); } function logMessageGray(msg) { if (progress_1.progress.isActive) return; prompts_1.log.message(picocolors_1.default.gray('⦿ ' + msg)); } function logWarning(msg, noColor) { const isProgressActive = progress_1.progress.isActive; if (isProgressActive) progress_1.progress.hide(); prompts_1.log.warning(noColor ? msg : picocolors_1.default.yellow(msg)); if (isProgressActive) progress_1.progress.display(); } function logInfo(msg) { if (progress_1.progress.isActive) return; prompts_1.log.info(msg); } function logError(msg, noColor) { const isProgressActive = progress_1.progress.isActive; if (isProgressActive) progress_1.progress.hide(); prompts_1.log.error(noColor ? msg : picocolors_1.default.red(msg)); if (isProgressActive) progress_1.progress.display(); } function logNote(msg, title) { (0, prompts_1.note)(msg, title); } function logIntro(msg) { (0, prompts_1.intro)(picocolors_1.default.inverse(` ${msg || 'react-native-integrate'} `)); } function logOutro(msg, error) { (0, prompts_1.outro)(picocolors_1.default[error ? 'red' : 'cyan'](msg || 'completed integration')); } const s = (0, prompts_1.spinner)(); let releaseListener; function startSpinner(msg, onCancel) { if (progress_1.progress.isActive) return; s.start(msg); if (onCancel) releaseListener = (0, waitInputToContinue_1.listenForKeys)('s', onCancel); } function updateSpinner(msg) { if (progress_1.progress.isActive) return; s.message(msg); } function stopSpinner(msg) { if (progress_1.progress.isActive) return; s.stop(msg); if (releaseListener) { releaseListener(); releaseListener = undefined; } } async function multiselect(msg, args) { const isProgressActive = progress_1.progress.isActive; if (isProgressActive) progress_1.progress.hide(); const response = await (0, prompts_1.multiselect)({ message: msg, required: args.required, options: args.options.map(x => ({ value: x.value, label: x.label || x.value.toString(), hint: x.hint, })), initialValues: args.initialValues, }); if ((0, prompts_1.isCancel)(response)) { (0, prompts_1.cancel)('operation cancelled'); process.exit(0); } if (isProgressActive) progress_1.progress.display(); // @ts-ignore return response; } async function select(msg, args) { const isProgressActive = progress_1.progress.isActive; if (isProgressActive) progress_1.progress.hide(); const response = await (0, prompts_1.select)({ message: msg, options: args.options.map(x => ({ value: x.value, label: x.label || x.value.toString(), hint: x.hint, })), initialValue: args.initialValue, maxItems: args.maxItems, }); if ((0, prompts_1.isCancel)(response)) { (0, prompts_1.cancel)('operation cancelled'); process.exit(0); } if (isProgressActive) progress_1.progress.display(); // @ts-ignore return response; } async function confirm(msg, args = {}) { const isProgressActive = progress_1.progress.isActive; if (isProgressActive) progress_1.progress.hide(); const response = await (0, prompts_1.confirm)({ message: msg, active: args.positive || 'yes', inactive: args.negative || 'no', initialValue: args.initialValue, }); if ((0, prompts_1.isCancel)(response)) { (0, prompts_1.cancel)('operation cancelled'); process.exit(0); } if (isProgressActive) progress_1.progress.display(); return response; } async function text(msg, args = {}) { const isProgressActive = progress_1.progress.isActive; if (isProgressActive) progress_1.progress.hide(); const response = await (0, prompts_1.text)({ message: msg, defaultValue: args.defaultValue, initialValue: args.initialValue, placeholder: args.placeholder, validate: args.validate, }); if ((0, prompts_1.isCancel)(response)) { (0, prompts_1.cancel)('operation cancelled'); process.exit(0); } if (isProgressActive) progress_1.progress.display(); return response; } function summarize(code, maxLength = 80) { if (code == null) return 'null'; const flatText = code.replace(/\n/g, '⏎'); return picocolors_1.default.yellow(flatText.substring(0, maxLength) + (flatText.length > maxLength ? '...' : '')); } function getLastLine(code, maxLength = 80) { if (code == null) return 'null'; const lines = code .replace(/\r/g, '') .split('\n') .filter(x => x.trim().length); if (!lines.length) return ''; const flatText = lines[lines.length - 1]; return (flatText.substring(0, maxLength) + (flatText.length > maxLength ? '...' : '')); }