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

Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
This commit is contained in:
SneakyFish5
2021-04-24 15:31:36 -05:00
committed by GitHub
parent 95d6fd059f
commit f35330c414
2 changed files with 18 additions and 28 deletions

View File

@@ -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([
{

View File

@@ -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)