From 3ed0f343c779b99900eb1bee2fc1f3fa10b54e3c Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 6 Jan 2022 11:30:06 +0300 Subject: [PATCH 1/3] Cli: Stop running gulp task and run install-libs resolves https://github.com/volosoft/volo/issues/8835 --- .../NpmGlobalPackagesChecker.cs | 10 ---- .../ProjectModification/NpmPackagesUpdater.cs | 50 +++++++++++-------- .../ProjectNpmPackageAdder.cs | 22 ++++---- 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs index 7df511592b..1459f5fc94 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmGlobalPackagesChecker.cs @@ -24,10 +24,6 @@ namespace Volo.Abp.Cli.ProjectModification { InstallYarn(); } - if (!installedNpmPackages.Contains(" gulp@")) - { - InstallGulp(); - } } protected virtual string GetInstalledNpmPackages() @@ -41,11 +37,5 @@ namespace Volo.Abp.Cli.ProjectModification Logger.LogInformation("Installing yarn..."); CmdHelper.RunCmd("npm install yarn -g"); } - - protected virtual void InstallGulp() - { - Logger.LogInformation("Installing gulp..."); - CmdHelper.RunCmd("npm install gulp -g"); - } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs index e1a048b9e1..094fe6dc96 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs @@ -23,6 +23,7 @@ namespace Volo.Abp.Cli.ProjectModification { public ILogger Logger { get; set; } protected ICancellationTokenProvider CancellationTokenProvider { get; } + public InstallLibsCommand InstallLibsCommand { get; } public ICmdHelper CmdHelper { get; } private readonly PackageJsonFileFinder _packageJsonFileFinder; @@ -35,17 +36,21 @@ namespace Volo.Abp.Cli.ProjectModification NpmGlobalPackagesChecker npmGlobalPackagesChecker, ICancellationTokenProvider cancellationTokenProvider, CliHttpClientFactory cliHttpClientFactory, + InstallLibsCommand ınstallLibsCommand, ICmdHelper cmdHelper) { _packageJsonFileFinder = packageJsonFileFinder; _npmGlobalPackagesChecker = npmGlobalPackagesChecker; CancellationTokenProvider = cancellationTokenProvider; + InstallLibsCommand = ınstallLibsCommand; CmdHelper = cmdHelper; _cliHttpClientFactory = cliHttpClientFactory; Logger = NullLogger.Instance; } - public async Task Update(string rootDirectory, bool includePreviews = false, bool includeReleaseCandidates = false, bool switchToStable = false, string version = null) + public async Task Update(string rootDirectory, bool includePreviews = false, + bool includeReleaseCandidates = false, + bool switchToStable = false, string version = null) { var fileList = _packageJsonFileFinder.Find(rootDirectory); @@ -60,7 +65,9 @@ namespace Volo.Abp.Cli.ProjectModification async Task UpdateAsync(string file) { - var updated = await UpdatePackagesInFile(file, includePreviews, includeReleaseCandidates, switchToStable, version); + var updated = await UpdatePackagesInFile(file, includePreviews, includeReleaseCandidates, + switchToStable, + version); packagesUpdated.TryAdd(file, updated); } @@ -88,10 +95,10 @@ namespace Volo.Abp.Cli.ProjectModification RunYarn(fileDirectory); } - if (!IsAngularProject(fileDirectory) && GulpFileExistAsync(fileDirectory)) + if (!IsAngularProject(fileDirectory)) { Thread.Sleep(1000); - RunGulp(fileDirectory); + RunInstallLibsAsync(fileDirectory); } } } @@ -108,11 +115,6 @@ namespace Volo.Abp.Cli.ProjectModification return await Task.FromResult(File.Exists(Path.Combine(directoryName, ".npmrc"))); } - private static bool GulpFileExistAsync(string directoryName) - { - return File.Exists(Path.Combine(directoryName, "gulpfile.js")); - } - private async Task CreateNpmrcFileAsync(string directoryName) { var fileName = Path.Combine(directoryName, ".npmrc"); @@ -121,7 +123,6 @@ namespace Volo.Abp.Cli.ProjectModification if (await NpmrcFileExistAsync(directoryName)) { - var fileContent = File.ReadAllText(fileName); if (!fileContent.Contains(abpRegistry)) @@ -164,10 +165,10 @@ namespace Volo.Abp.Cli.ProjectModification { var client = _cliHttpClientFactory.CreateClient(); using (var response = await client.GetHttpResponseMessageWithRetryAsync( - url: $"{CliUrls.WwwAbpIo}api/myget/apikey/", - cancellationToken: CancellationTokenProvider.Token, - logger: Logger - )) + url: $"{CliUrls.WwwAbpIo}api/myget/apikey/", + cancellationToken: CancellationTokenProvider.Token, + logger: Logger + )) { return Encoding.Default.GetString(await response.Content.ReadAsByteArrayAsync()); } @@ -202,7 +203,8 @@ namespace Volo.Abp.Cli.ProjectModification foreach (var abpPackage in abpPackages) { - var updated = await TryUpdatingPackage(filePath, abpPackage, includePreviews, includeReleaseCandidates, switchToStable, specifiedVersion); + var updated = await TryUpdatingPackage(filePath, abpPackage, includePreviews, includeReleaseCandidates, + switchToStable, specifiedVersion); if (updated) { @@ -236,15 +238,19 @@ namespace Volo.Abp.Cli.ProjectModification return false; } - if (SemanticVersion.Parse(specifiedVersion) <= SemanticVersion.Parse(currentVersion.RemovePreFix("~", "^"))) + if (SemanticVersion.Parse(specifiedVersion) <= + SemanticVersion.Parse(currentVersion.RemovePreFix("~", "^"))) { return false; } + version = specifiedVersion.EnsureStartsWith('^'); } else { - if ((includePreviews || (!switchToStable && (currentVersion != null && currentVersion.Contains("-preview")))) && !includeReleaseCandidates) + if ((includePreviews || + (!switchToStable && (currentVersion != null && currentVersion.Contains("-preview")))) && + !includeReleaseCandidates) { version = "preview"; } @@ -328,16 +334,18 @@ namespace Volo.Abp.Cli.ProjectModification abpPackages .AddRange(properties.Where(p => p.Name.StartsWith("@abp/") || p.Name.StartsWith("@volo/")) - .ToList()); + .ToList()); } return abpPackages; } - protected virtual void RunGulp(string fileDirectory) + protected virtual async Task RunInstallLibsAsync(string fileDirectory) { - Logger.LogInformation($"Running Gulp on {fileDirectory}"); - CmdHelper.RunCmd($"cd {fileDirectory} && gulp"); + var args = new CommandLineArgs("install-libs"); + args.Options.Add(BundleCommand.Options.WorkingDirectory.Short, fileDirectory); + + await InstallLibsCommand.ExecuteAsync(args); } protected virtual void RunYarn(string fileDirectory) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs index 3baab9ed98..a65f86faf6 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/ProjectNpmPackageAdder.cs @@ -26,6 +26,7 @@ namespace Volo.Abp.Cli.ProjectModification public SourceCodeDownloadService SourceCodeDownloadService { get; } public AngularSourceCodeAdder AngularSourceCodeAdder { get; } public IRemoteServiceExceptionHandler RemoteServiceExceptionHandler { get; } + public InstallLibsCommand InstallLibsCommand { get; } public ICmdHelper CmdHelper { get; } private readonly CliHttpClientFactory _cliHttpClientFactory; public ILogger Logger { get; set; } @@ -35,12 +36,14 @@ namespace Volo.Abp.Cli.ProjectModification SourceCodeDownloadService sourceCodeDownloadService, AngularSourceCodeAdder angularSourceCodeAdder, IRemoteServiceExceptionHandler remoteServiceExceptionHandler, + InstallLibsCommand ınstallLibsCommand, ICmdHelper cmdHelper) { JsonSerializer = jsonSerializer; SourceCodeDownloadService = sourceCodeDownloadService; AngularSourceCodeAdder = angularSourceCodeAdder; RemoteServiceExceptionHandler = remoteServiceExceptionHandler; + InstallLibsCommand = ınstallLibsCommand; CmdHelper = cmdHelper; _cliHttpClientFactory = cliHttpClientFactory; Logger = NullLogger.Instance; @@ -109,14 +112,14 @@ namespace Volo.Abp.Cli.ProjectModification ); } - public Task AddMvcPackageAsync(string directory, NpmPackageInfo npmPackage, string version = null, - bool skipGulpCommand = false) + public async Task AddMvcPackageAsync(string directory, NpmPackageInfo npmPackage, string version = null, + bool skipInstallingLibs = false) { var packageJsonFilePath = Path.Combine(directory, "package.json"); if (!File.Exists(packageJsonFilePath) || File.ReadAllText(packageJsonFilePath).Contains($"\"{npmPackage.Name}\"")) { - return Task.CompletedTask; + return; } Logger.LogInformation($"Installing '{npmPackage.Name}' package to the project '{packageJsonFilePath}'..."); @@ -134,16 +137,15 @@ namespace Volo.Abp.Cli.ProjectModification Logger.LogInformation("yarn add " + npmPackage.Name + versionPostfix); CmdHelper.RunCmd("yarn add " + npmPackage.Name + versionPostfix); - if (skipGulpCommand) + if (skipInstallingLibs) { - return Task.CompletedTask; + return; } - Logger.LogInformation("gulp"); - CmdHelper.RunCmd("gulp"); + await InstallLibsCommand.ExecuteAsync( + new CommandLineArgs("install-libs") + ); } - - return Task.CompletedTask; } private string DetectAbpVersionOrNull(string packageJsonFile) @@ -158,7 +160,7 @@ namespace Volo.Abp.Cli.ProjectModification { var packageJsonFileContent = File.ReadAllText(packageJsonFile); var packageJsonObject = JObject.Parse(packageJsonFileContent); - var dependenciesObject = (JObject) packageJsonObject["dependencies"]; + var dependenciesObject = (JObject)packageJsonObject["dependencies"]; if (dependenciesObject == null) { From 2d1bbf299c30de61d0725e26d408e5263d32fb98 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 6 Jan 2022 11:53:30 +0300 Subject: [PATCH 2/3] Update NpmPackagesUpdater.cs --- .../Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs index 094fe6dc96..453e7a54b3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs @@ -11,6 +11,8 @@ using Microsoft.Extensions.Logging.Abstractions; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NuGet.Versioning; +using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.Commands; using Volo.Abp.Cli.Http; using Volo.Abp.Cli.Utils; using Volo.Abp.DependencyInjection; @@ -343,7 +345,7 @@ namespace Volo.Abp.Cli.ProjectModification protected virtual async Task RunInstallLibsAsync(string fileDirectory) { var args = new CommandLineArgs("install-libs"); - args.Options.Add(BundleCommand.Options.WorkingDirectory.Short, fileDirectory); + args.Options.Add(InstallLibsCommand.Options.WorkingDirectory.Short, fileDirectory); await InstallLibsCommand.ExecuteAsync(args); } From 3ade8374a9b4122737c7d4ff369f26cb2cc40a09 Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 6 Jan 2022 15:15:14 +0300 Subject: [PATCH 3/3] Cli: Install SignalR to blazor.server if needed --- .../ProjectModification/SolutionModuleAdder.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs index affb89771f..d01aeb9506 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionModuleAdder.cs @@ -519,14 +519,23 @@ namespace Volo.Abp.Cli.ProjectModification foreach (var nugetPackage in module.NugetPackages) { + var isProjectTiered = await IsProjectTiered(projectFiles); + var nugetTarget = - await IsProjectTiered(projectFiles) && nugetPackage.TieredTarget != NuGetPackageTarget.Undefined + isProjectTiered && nugetPackage.TieredTarget != NuGetPackageTarget.Undefined ? nugetPackage.TieredTarget : nugetPackage.Target; - if (webPackagesWillBeAddedToBlazorServerProject && nugetTarget == NuGetPackageTarget.Web) + if (webPackagesWillBeAddedToBlazorServerProject) { - nugetTarget = NuGetPackageTarget.BlazorServer; + if ( nugetTarget == NuGetPackageTarget.Web) + { + nugetTarget = NuGetPackageTarget.BlazorServer; + } + else if (!isProjectTiered && nugetTarget == NuGetPackageTarget.SignalR) + { + nugetTarget = NuGetPackageTarget.BlazorServer; + } } var targetProjectFile = ProjectFinder.FindNuGetTargetProjectFile(projectFiles, nugetTarget);