From 25f8d524a8ccb2ce24fc605c6cb7b728cd8aa38e Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Mon, 14 Aug 2023 16:07:30 +0200 Subject: [PATCH 1/4] feat(doctor): select healthchecks based on where command was ran --- packages/cli-doctor/package.json | 1 + .../src/tools/healthchecks/index.ts | 30 ++++++++++++++++--- yarn.lock | 5 ++++ 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/packages/cli-doctor/package.json b/packages/cli-doctor/package.json index 2ac967024..244d6670c 100644 --- a/packages/cli-doctor/package.json +++ b/packages/cli-doctor/package.json @@ -15,6 +15,7 @@ "@react-native-community/cli-tools": "12.0.0-alpha.7", "chalk": "^4.1.2", "command-exists": "^1.2.8", + "deepmerge": "^4.3.1", "envinfo": "^7.7.2", "execa": "^5.0.0", "hermes-profile-transformer": "^0.0.6", diff --git a/packages/cli-doctor/src/tools/healthchecks/index.ts b/packages/cli-doctor/src/tools/healthchecks/index.ts index d3566e7a8..4c800b675 100644 --- a/packages/cli-doctor/src/tools/healthchecks/index.ts +++ b/packages/cli-doctor/src/tools/healthchecks/index.ts @@ -15,6 +15,7 @@ import {Healthchecks, HealthCheckCategory} from '../../types'; import loadConfig from '@react-native-community/cli-config'; import xcodeEnv from './xcodeEnv'; import packager from './packager'; +import deepmerge from 'deepmerge'; export const HEALTHCHECK_TYPES = { ERROR: 'ERROR', @@ -29,20 +30,40 @@ type Options = { export const getHealthchecks = ({contributor}: Options): Healthchecks => { let additionalChecks: HealthCheckCategory[] = []; + let projectSpecificHealthchecks = {}; + // Doctor can run in a detached mode, where there isn't a config so this can fail try { let config = loadConfig(); additionalChecks = config.healthChecks; + + if (config) { + projectSpecificHealthchecks = { + common: { + label: 'Common', + healthchecks: [packager], + }, + android: { + label: 'Android', + healthchecks: [androidSDK], + }, + ...(process.platform === 'darwin' && { + ios: { + label: 'iOS', + healthchecks: [xcodeEnv], + }, + }), + }; + } } catch {} - return { + const defaultHealthchecks = { common: { label: 'Common', healthchecks: [ nodeJS, yarn, npm, - packager, ...(process.platform === 'darwin' ? [watchman] : []), ], }, @@ -52,7 +73,6 @@ export const getHealthchecks = ({contributor}: Options): Healthchecks => { adb, jdk, androidStudio, - androidSDK, androidHomeEnvVariable, ...(contributor ? [androidNDK] : []), ], @@ -61,10 +81,12 @@ export const getHealthchecks = ({contributor}: Options): Healthchecks => { ? { ios: { label: 'iOS', - healthchecks: [xcode, ruby, cocoaPods, iosDeploy, xcodeEnv], + healthchecks: [xcode, ruby, cocoaPods, iosDeploy], }, } : {}), ...additionalChecks, }; + + return deepmerge(defaultHealthchecks, projectSpecificHealthchecks); }; diff --git a/yarn.lock b/yarn.lock index 1e535486e..c25307dfa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5379,6 +5379,11 @@ deepmerge@^4.3.0: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== +deepmerge@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" From ac1ce66bc9077499b69efeeee25ca8868e2bb743 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Sat, 19 Aug 2023 15:27:56 +0200 Subject: [PATCH 2/4] chore: add info when running outside of project. --- packages/cli-doctor/src/tools/healthchecks/index.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/cli-doctor/src/tools/healthchecks/index.ts b/packages/cli-doctor/src/tools/healthchecks/index.ts index 4c800b675..98b87e2f3 100644 --- a/packages/cli-doctor/src/tools/healthchecks/index.ts +++ b/packages/cli-doctor/src/tools/healthchecks/index.ts @@ -16,6 +16,7 @@ import loadConfig from '@react-native-community/cli-config'; import xcodeEnv from './xcodeEnv'; import packager from './packager'; import deepmerge from 'deepmerge'; +import {logger} from '@react-native-community/cli-tools'; export const HEALTHCHECK_TYPES = { ERROR: 'ERROR', @@ -29,12 +30,12 @@ type Options = { export const getHealthchecks = ({contributor}: Options): Healthchecks => { let additionalChecks: HealthCheckCategory[] = []; - let projectSpecificHealthchecks = {}; + let config; // Doctor can run in a detached mode, where there isn't a config so this can fail try { - let config = loadConfig(); + config = loadConfig(); additionalChecks = config.healthChecks; if (config) { @@ -57,6 +58,13 @@ export const getHealthchecks = ({contributor}: Options): Healthchecks => { } } catch {} + if (!config) { + logger.log(); + logger.info( + 'Detected that command has been run outside of React Native project, running basic healthchecks.', + ); + } + const defaultHealthchecks = { common: { label: 'Common', From ad38e16c18f86e39fe2ad0a8132d7214dfe24c51 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Sat, 19 Aug 2023 15:49:09 +0200 Subject: [PATCH 3/4] chore: align dependencies --- packages/cli-doctor/package.json | 2 +- yarn.lock | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/cli-doctor/package.json b/packages/cli-doctor/package.json index 244d6670c..79446317a 100644 --- a/packages/cli-doctor/package.json +++ b/packages/cli-doctor/package.json @@ -15,7 +15,7 @@ "@react-native-community/cli-tools": "12.0.0-alpha.7", "chalk": "^4.1.2", "command-exists": "^1.2.8", - "deepmerge": "^4.3.1", + "deepmerge": "^4.3.0", "envinfo": "^7.7.2", "execa": "^5.0.0", "hermes-profile-transformer": "^0.0.6", diff --git a/yarn.lock b/yarn.lock index c25307dfa..1e535486e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5379,11 +5379,6 @@ deepmerge@^4.3.0: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== -deepmerge@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" From d01e3879b24213a69d508308dddab9eb0d5d943c Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Mon, 18 Sep 2023 23:09:58 +0200 Subject: [PATCH 4/4] fix: ensure that command has been run in React Native project --- packages/cli-doctor/src/tools/healthchecks/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli-doctor/src/tools/healthchecks/index.ts b/packages/cli-doctor/src/tools/healthchecks/index.ts index 98b87e2f3..cd8b8fb37 100644 --- a/packages/cli-doctor/src/tools/healthchecks/index.ts +++ b/packages/cli-doctor/src/tools/healthchecks/index.ts @@ -38,7 +38,7 @@ export const getHealthchecks = ({contributor}: Options): Healthchecks => { config = loadConfig(); additionalChecks = config.healthChecks; - if (config) { + if (config.reactNativePath) { projectSpecificHealthchecks = { common: { label: 'Common',