From f35330c4148598e6dceeb333003dc8373a83d5f2 Mon Sep 17 00:00:00 2001 From: SneakyFish5 <32284796+SneakyFish5@users.noreply.github.com> Date: Sat, 24 Apr 2021 15:31:36 -0500 Subject: [PATCH] refactor(cli.js): rework yarn check (#1611) Co-authored-by: Lucas Nogueira --- .../api/dependency-manager/npm-packages.ts | 10 +++--- .../cli.js/src/api/dependency-manager/util.ts | 36 +++++++------------ 2 files changed, 18 insertions(+), 28 deletions(-) diff --git a/tooling/cli.js/src/api/dependency-manager/npm-packages.ts b/tooling/cli.js/src/api/dependency-manager/npm-packages.ts index aeb87eecf..9e5cac94a 100644 --- a/tooling/cli.js/src/api/dependency-manager/npm-packages.ts +++ b/tooling/cli.js/src/api/dependency-manager/npm-packages.ts @@ -40,14 +40,14 @@ async function manageDependencies( if (existsSync(resolve.app('package.json'))) { for (const dependency of dependencies) { - const currentVersion = await getNpmPackageVersion(dependency) + const currentVersion = getNpmPackageVersion(dependency) if (currentVersion === null) { log(`Installing ${dependency}...`) if ( managementType === ManagementType.Install || managementType === ManagementType.InstallDev ) { - const packageManager = (await useYarn()) ? 'YARN' : 'NPM' + const packageManager = useYarn() ? 'YARN' : 'NPM' const inquired = (await inquirer.prompt([ { type: 'confirm', @@ -62,15 +62,15 @@ async function manageDependencies( ])) as { answer: boolean } if (inquired.answer) { if (managementType === ManagementType.Install) { - await installNpmPackage(dependency) + installNpmPackage(dependency) } else if (managementType === ManagementType.InstallDev) { - await installNpmDevPackage(dependency) + installNpmDevPackage(dependency) } installedDeps.push(dependency) } } } else if (managementType === ManagementType.Update) { - const latestVersion = await getNpmLatestVersion(dependency) + const latestVersion = getNpmLatestVersion(dependency) if (semverLt(currentVersion, latestVersion)) { const inquired = (await inquirer.prompt([ { diff --git a/tooling/cli.js/src/api/dependency-manager/util.ts b/tooling/cli.js/src/api/dependency-manager/util.ts index 8efb08970..77b5a3741 100644 --- a/tooling/cli.js/src/api/dependency-manager/util.ts +++ b/tooling/cli.js/src/api/dependency-manager/util.ts @@ -8,17 +8,10 @@ import { appDir, resolve as appResolve } from '../../helpers/app-paths' import { existsSync } from 'fs' import semver from 'semver' -async function useYarn(): Promise { - const hasYarnLockfile = existsSync(appResolve.app('yarn.lock')) - if (hasYarnLockfile) { - return true - } else { - return await new Promise((resolve) => { - const child = crossSpawnSync('npm', ['--version']) - resolve(!!(child.status ?? child.error)) - }) - } -} +const useYarn = (): boolean => + process.env.npm_execpath + ? process.env.npm_execpath.includes('yarn') + : existsSync(appResolve.app('yarn.lock')) function getCrateLatestVersion(crateName: string): string | null { const child = crossSpawnSync('cargo', ['search', crateName, '--limit', '1']) @@ -32,8 +25,8 @@ function getCrateLatestVersion(crateName: string): string | null { } } -async function getNpmLatestVersion(packageName: string): Promise { - if (await useYarn()) { +function getNpmLatestVersion(packageName: string): string { + if (useYarn()) { const child = crossSpawnSync( 'yarn', ['info', packageName, 'versions', '--json'], @@ -52,10 +45,8 @@ async function getNpmLatestVersion(packageName: string): Promise { } } -async function getNpmPackageVersion( - packageName: string -): Promise { - const child = (await useYarn()) +function getNpmPackageVersion(packageName: string): string | null { + const child = useYarn() ? crossSpawnSync( 'yarn', ['list', '--pattern', packageName, '--depth', '0'], @@ -76,16 +67,16 @@ async function getNpmPackageVersion( } } -async function installNpmPackage(packageName: string): Promise { - if (await useYarn()) { +function installNpmPackage(packageName: string): void { + if (useYarn()) { spawnSync('yarn', ['add', packageName], appDir) } else { spawnSync('npm', ['install', packageName], appDir) } } -async function installNpmDevPackage(packageName: string): Promise { - if (await useYarn()) { +function installNpmDevPackage(packageName: string): void { + if (useYarn()) { spawnSync('yarn', ['add', packageName, '--dev'], appDir) } else { spawnSync('npm', ['install', packageName, '--save-dev'], appDir) @@ -93,8 +84,7 @@ async function installNpmDevPackage(packageName: string): Promise { } function updateNpmPackage(packageName: string): void { - const usesYarn = existsSync(appResolve.app('yarn.lock')) - if (usesYarn) { + if (useYarn()) { spawnSync('yarn', ['upgrade', packageName, '--latest'], appDir) } else { spawnSync('npm', ['install', `${packageName}@latest`], appDir)