Skip to content

Commit

Permalink
chore: move devices prompt to prompts.ts (#2224)
Browse files Browse the repository at this point in the history
* chore: move devices prompt to `prompts.ts`

* feat: add simulator version

* fix: apply code review suggestions
  • Loading branch information
szymonrybczak authored Dec 21, 2023
1 parent fc11714 commit ae056a1
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 15 deletions.
16 changes: 6 additions & 10 deletions packages/cli-platform-apple/src/commands/logCommand/createLog.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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
Expand Down Expand Up @@ -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 {
Expand Down
29 changes: 24 additions & 5 deletions packages/cli-platform-apple/src/tools/prompts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<string> {
Expand Down Expand Up @@ -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,
};
Expand All @@ -76,3 +78,20 @@ export async function promptForDeviceSelection(
});
return device;
}

export async function promptForDeviceToTailLogs(
platformReadableName: string,
simulators: Device[],
): Promise<string> {
const {udid} = await prompt({
type: 'select',
name: 'udid',
message: `Select ${platformReadableName} simulators to tail logs from`,
choices: simulators.map((simulator) => ({
title: `${simulator.name}${getVersionFromDevice(simulator)}`.trim(),
value: simulator.udid,
})),
});

return udid;
}

0 comments on commit ae056a1

Please sign in to comment.