From b0fdbe8eb7cfa3c48164cab6a38839c85ba53493 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Wed, 20 Dec 2023 16:52:34 +0100 Subject: [PATCH 1/3] chore: move devices prompt to `prompts.ts` --- .../src/commands/logCommand/createLog.ts | 16 ++++++---------- .../cli-platform-apple/src/tools/prompts.ts | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/packages/cli-platform-apple/src/commands/logCommand/createLog.ts b/packages/cli-platform-apple/src/commands/logCommand/createLog.ts index 6d1f6763a..e7197dd96 100644 --- a/packages/cli-platform-apple/src/commands/logCommand/createLog.ts +++ b/packages/cli-platform-apple/src/commands/logCommand/createLog.ts @@ -1,4 +1,4 @@ -import {CLIError, logger, prompt} from '@react-native-community/cli-tools'; +import {CLIError, logger} from '@react-native-community/cli-tools'; import {Config, IOSProjectConfig} from '@react-native-community/cli-types'; import {spawnSync} from 'child_process'; import os from 'os'; @@ -8,6 +8,7 @@ import listDevices from '../../tools/listDevices'; import {getPlatformInfo} from '../runCommand/getPlatformInfo'; import {BuilderCommand} from '../../types'; import {supportedPlatforms} from '../../config/supportedPlatforms'; +import {promptForDeviceToTailLogs} from '../../tools/prompts'; /** * Starts Apple device syslog tail @@ -64,15 +65,10 @@ const createLog = } if (args.interactive && bootedAndAvailableSimulators.length > 1) { - const {udid} = await prompt({ - type: 'select', - name: 'udid', - message: `Select ${platformReadableName} simulators to tail logs from`, - choices: bootedAndAvailableSimulators.map((simulator) => ({ - title: simulator.name, - value: simulator.udid, - })), - }); + const udid = await promptForDeviceToTailLogs( + platformReadableName, + bootedAndAvailableSimulators, + ); tailDeviceLogs(udid); } else { diff --git a/packages/cli-platform-apple/src/tools/prompts.ts b/packages/cli-platform-apple/src/tools/prompts.ts index 2aa343b5c..51bdfe9b0 100644 --- a/packages/cli-platform-apple/src/tools/prompts.ts +++ b/packages/cli-platform-apple/src/tools/prompts.ts @@ -76,3 +76,20 @@ export async function promptForDeviceSelection( }); return device; } + +export async function promptForDeviceToTailLogs( + platformReadableName: string, + simulators: Device[], +): Promise { + const {udid} = await prompt({ + type: 'select', + name: 'udid', + message: `Select ${platformReadableName} simulators to tail logs from`, + choices: simulators.map((simulator) => ({ + title: simulator.name, + value: simulator.udid, + })), + }); + + return udid; +} From c959d6fd8dbd41abb4170c5a5544bf120aacb78c Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Thu, 21 Dec 2023 08:34:44 +0100 Subject: [PATCH 2/3] feat: add simulator version --- packages/cli-platform-apple/src/tools/prompts.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/cli-platform-apple/src/tools/prompts.ts b/packages/cli-platform-apple/src/tools/prompts.ts index 51bdfe9b0..83efc1cc2 100644 --- a/packages/cli-platform-apple/src/tools/prompts.ts +++ b/packages/cli-platform-apple/src/tools/prompts.ts @@ -85,10 +85,16 @@ export async function promptForDeviceToTailLogs( type: 'select', name: 'udid', message: `Select ${platformReadableName} simulators to tail logs from`, - choices: simulators.map((simulator) => ({ - title: simulator.name, - value: simulator.udid, - })), + choices: simulators.map((simulator) => { + const version = simulator.version + ? ` (${simulator.version.match(/^(\d+\.\d+)/)?.[1]})` + : ''; + + return { + title: `${simulator.name}${version}`.trim(), + value: simulator.udid, + }; + }), }); return udid; From 2442d5eefc9086b5460e4b48e3ee59d8f6e72b89 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Thu, 21 Dec 2023 09:29:58 +0100 Subject: [PATCH 3/3] fix: apply code review suggestions --- .../cli-platform-apple/src/tools/prompts.ts | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/packages/cli-platform-apple/src/tools/prompts.ts b/packages/cli-platform-apple/src/tools/prompts.ts index 83efc1cc2..bfe6f53d9 100644 --- a/packages/cli-platform-apple/src/tools/prompts.ts +++ b/packages/cli-platform-apple/src/tools/prompts.ts @@ -2,6 +2,10 @@ import chalk from 'chalk'; import {Device} from '../types'; import {prompt} from '@react-native-community/cli-tools'; +function getVersionFromDevice({version}: Device) { + return version ? ` (${version.match(/^(\d+\.\d+)/)?.[1]})` : ''; +} + export async function promptForSchemeSelection( schemes: string[], ): Promise { @@ -57,17 +61,15 @@ export async function promptForDeviceSelection( choices: sortedDevices .filter(({type}) => type === 'device' || type === 'simulator') .map((d) => { - const version = d.version - ? ` (${d.version.match(/^(\d+\.\d+)/)?.[1]})` - : ''; - const availability = !d.isAvailable && !!d.availabilityError ? chalk.red(`(unavailable - ${d.availabilityError})`) : ''; return { - title: `${chalk.bold(`${d.name}${version}`)} ${availability}`, + title: `${chalk.bold( + `${d.name}${getVersionFromDevice(d)}`, + )} ${availability}`, value: d, disabled: !d.isAvailable, }; @@ -85,16 +87,10 @@ export async function promptForDeviceToTailLogs( type: 'select', name: 'udid', message: `Select ${platformReadableName} simulators to tail logs from`, - choices: simulators.map((simulator) => { - const version = simulator.version - ? ` (${simulator.version.match(/^(\d+\.\d+)/)?.[1]})` - : ''; - - return { - title: `${simulator.name}${version}`.trim(), - value: simulator.udid, - }; - }), + choices: simulators.map((simulator) => ({ + title: `${simulator.name}${getVersionFromDevice(simulator)}`.trim(), + value: simulator.udid, + })), }); return udid;