From 0dd3d70586f0528e3f7842ac9d4a2418f171d482 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Tue, 2 Aug 2022 14:40:05 +0300 Subject: [PATCH] Cli: Improve NpmHelper Npm & Yarn installation check resolves https://github.com/abpframework/abp/issues/13207 --- .../Volo/Abp/Cli/Utils/NpmHelper.cs | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs index 8923d2ebae..a2d75d48d9 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/NpmHelper.cs @@ -1,4 +1,6 @@ -using Microsoft.Extensions.Logging; +using System; +using System.Linq; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using NuGet.Versioning; using Volo.Abp.DependencyInjection; @@ -19,15 +21,30 @@ public class NpmHelper : ITransientDependency public bool IsNpmInstalled() { var output = CmdHelper.RunCmdAndGetOutput("npm -v").Trim(); - return SemanticVersion.TryParse(output, out _); + var outputLines = output.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); + + return outputLines.Any(ol => SemanticVersion.TryParse(ol, out _)); } public bool IsYarnAvailable() { var output = CmdHelper.RunCmdAndGetOutput("yarn -v").Trim(); - if (!SemanticVersion.TryParse(output, out var version)){ + var outputLines = output.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); + SemanticVersion version = null; + + foreach (var outputLine in outputLines) + { + if (SemanticVersion.TryParse(outputLine, out version)) + { + break; + } + } + + if (version == null) + { return false; } + return version > SemanticVersion.Parse("1.20.0"); }