Browse Source

refactor(cli.js): rework yarn check (#1611)

Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
SneakyFish5 4 years ago
parent
commit
f35330c414

+ 5 - 5
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([
             {

+ 13 - 23
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<boolean> {
-  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<string> {
-  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<string> {
   }
 }
 
-async function getNpmPackageVersion(
-  packageName: string
-): Promise<string | null> {
-  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<void> {
-  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<void> {
-  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<void> {
 }
 
 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)