fix(cli): prmpt user before install deps in init (#1381)

Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
This commit is contained in:
Amr Bashir 2021-03-24 08:11:10 +02:00 committed by GitHub
parent a2f3f57ff0
commit 5b9e08f2f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 18 deletions

View File

@ -24,15 +24,14 @@ async function manageDependencies(
} else if (managementType === ManagementType.Update) {
const latestVersion = await getCrateLatestVersion(dependency)
if (semverLt(currentVersion, latestVersion)) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const inquired = await inquirer.prompt([
const inquired = (await inquirer.prompt([
{
type: 'confirm',
name: 'answer',
message: `[CARGO COMMANDS] "${dependency}" latest version is ${latestVersion}. Do you want to update?`,
default: false
}
])
])) as { answer: boolean }
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
if (inquired.answer) {
spawnSync('cargo', ['install', dependency, '--force'])

View File

@ -69,16 +69,14 @@ async function manageDependencies(
} else if (managementType === ManagementType.Update) {
const latestVersion = await getCrateLatestVersion(dependency)
if (semverLt(currentVersion, latestVersion)) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
const inquired = await inquirer.prompt([
const inquired = (await inquirer.prompt([
{
type: 'confirm',
name: 'answer',
message: `[CRATES] "${dependency}" latest version is ${latestVersion}. Do you want to update?`,
default: false
}
])
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
])) as { answer: boolean }
if (inquired.answer) {
log(`Updating ${dependency}...`)
// eslint-disable-next-line security/detect-object-injection

View File

@ -5,7 +5,8 @@ import {
installNpmPackage,
installNpmDevPackage,
updateNpmPackage,
semverLt
semverLt,
useYarn
} from './util'
import logger from '../../helpers/logger'
import { resolve } from '../../helpers/app-paths'
@ -38,25 +39,43 @@ async function manageDependencies(
const currentVersion = await getNpmPackageVersion(dependency)
if (currentVersion === null) {
log(`Installing ${dependency}...`)
if (managementType === ManagementType.Install) {
await installNpmPackage(dependency)
} else if (managementType === ManagementType.InstallDev) {
await installNpmDevPackage(dependency)
if (
managementType === ManagementType.Install ||
managementType === ManagementType.InstallDev
) {
const packageManager = (await useYarn()) ? 'YARN' : 'NPM'
const inquired = (await inquirer.prompt([
{
type: 'confirm',
name: 'answer',
message: `[${packageManager}]: "Do you want to install ${dependency} ${
managementType === ManagementType.InstallDev
? 'as dev-dependency'
: ''
}?"`,
default: false
}
])) as { answer: boolean }
if (inquired.answer) {
if (managementType === ManagementType.Install) {
await installNpmPackage(dependency)
} else if (managementType === ManagementType.InstallDev) {
await installNpmDevPackage(dependency)
}
installedDeps.push(dependency)
}
}
installedDeps.push(dependency)
} else if (managementType === ManagementType.Update) {
const latestVersion = await getNpmLatestVersion(dependency)
if (semverLt(currentVersion, latestVersion)) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
const inquired = await inquirer.prompt([
const inquired = (await inquirer.prompt([
{
type: 'confirm',
name: 'answer',
message: `[NPM]: "${dependency}" latest version is ${latestVersion}. Do you want to update?`,
default: false
}
])
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
])) as { answer: boolean }
if (inquired.answer) {
log(`Updating ${dependency}...`)
updateNpmPackage(dependency)
@ -78,7 +97,7 @@ async function manageDependencies(
return result
}
const dependencies = ['tauri']
const dependencies = ['@tauri-apps/api', '@tauri-apps/cli']
async function install(): Promise<Result> {
return await manageDependencies(ManagementType.Install, dependencies)

View File

@ -117,6 +117,7 @@ function semverLt(first: string, second: string): boolean {
}
export {
useYarn,
getCrateLatestVersion,
getNpmLatestVersion,
getNpmPackageVersion,