From 5e287b068a63794810de8b69922b18f80da2a617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Thu, 22 Jun 2023 14:18:54 +0200 Subject: [PATCH] fix: init when there's a package.json in folder (#1980) * fix: init when there's a package.json in folder * test: update snapshots --------- Co-authored-by: szymonrybczak --- __e2e__/__snapshots__/config.test.ts.snap | 2 +- packages/cli-config/src/loadConfig.ts | 40 ++++++++++--------- .../cli-tools/src/releaseChecker/index.ts | 2 +- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/__e2e__/__snapshots__/config.test.ts.snap b/__e2e__/__snapshots__/config.test.ts.snap index 2fc4b7dc1..ddb819206 100644 --- a/__e2e__/__snapshots__/config.test.ts.snap +++ b/__e2e__/__snapshots__/config.test.ts.snap @@ -4,7 +4,7 @@ exports[`shows up current config without unnecessary output 1`] = ` { "root": "<>/TestProject", "reactNativePath": "<>/TestProject/node_modules/react-native", - "reactNativeVersion": "0.71", + "reactNativeVersion": "0.72", "dependencies": {}, "commands": [ { diff --git a/packages/cli-config/src/loadConfig.ts b/packages/cli-config/src/loadConfig.ts index d39a93b14..ffd3533de 100644 --- a/packages/cli-config/src/loadConfig.ts +++ b/packages/cli-config/src/loadConfig.ts @@ -53,6 +53,25 @@ function getDependencyConfig( ) as DependencyConfig; } +// Try our best to figure out what version of React Native we're running. This is +// currently being used to get our deeplinks working, so it's only worried with +// the major and minor version. +function getReactNativeVersion(reactNativePath: string) { + try { + let semver = version.current(reactNativePath); + if (semver) { + // Retain only these version, since they correspond with our documentation. + return `${semver.major}.${semver.minor}`; + } + } catch (e) { + // If we don't seem to be in a well formed project, give up quietly. + if (!(e instanceof UnknownProjectError)) { + throw e; + } + } + return 'unknown'; +} + /** * Loads CLI configuration */ @@ -67,7 +86,9 @@ function loadConfig(projectRoot: string = findProjectRoot()): Config { ? path.resolve(projectRoot, userConfig.reactNativePath) : resolveReactNativePath(projectRoot); }, - reactNativeVersion: 'unknown', + get reactNativeVersion() { + return getReactNativeVersion(initialConfig.reactNativePath); + }, dependencies: userConfig.dependencies, commands: userConfig.commands, healthChecks: [], @@ -92,22 +113,6 @@ function loadConfig(projectRoot: string = findProjectRoot()): Config { }, }; - // Try our best to figure out what version of React Native we're running. This is - // currently being used to get our deeplinks working, so it's only worried with - // the major and minor version. - try { - let semver = version.current(initialConfig.reactNativePath); - if (semver) { - // Retain only these version, since they correspond with our documentation. - initialConfig.reactNativeVersion = `${semver.major}.${semver.minor}`; - } - } catch (e) { - // If we don't seem to be in a well formed project, give up quietly. - if (!(e instanceof UnknownProjectError)) { - throw e; - } - } - const finalConfig = Array.from( new Set([ ...Object.keys(userConfig.dependencies), @@ -117,7 +122,6 @@ function loadConfig(projectRoot: string = findProjectRoot()): Config { const localDependencyRoot = userConfig.dependencies[dependencyName] && userConfig.dependencies[dependencyName].root; - try { let root = localDependencyRoot || diff --git a/packages/cli-tools/src/releaseChecker/index.ts b/packages/cli-tools/src/releaseChecker/index.ts index 2da3a53ae..303a54848 100644 --- a/packages/cli-tools/src/releaseChecker/index.ts +++ b/packages/cli-tools/src/releaseChecker/index.ts @@ -69,7 +69,7 @@ export function current(projectRoot: string): SemVer | undefined { if (found) { return found; } - } catch (_) { + } catch { throw new UnknownProjectError(projectRoot); } return undefined;