From b63929f4924c6077d3b64156eb6af9933f316bd6 Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Wed, 15 May 2019 18:32:44 +0300 Subject: [PATCH] Add project generation step: ChangeLocalhostPortStep --- .../Volo/Abp/Cli/CliService.cs | 2 +- .../Building/Steps/ChangeLocalhostPortStep.cs | 35 +++++++++++++++++++ .../ProjectBuilding/TemplateInfoProvider.cs | 6 ++-- ...cApplicationTemplate.cs => MvcTemplate.cs} | 16 +++++++-- 4 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeLocalhostPortStep.cs rename framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/{MvcApplicationTemplate.cs => MvcTemplate.cs} (82%) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs index e03ba1b9ab..50784a8d90 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/CliService.cs @@ -73,7 +73,7 @@ namespace Volo.Abp.Cli if (!latestVersion.IsNullOrEmpty() && currentVersion != latestVersion) { Logger.LogInformation(""); - Logger.LogWarning("ABP CLI has a newer version. Please update to get the latest features and fixes."); + Logger.LogWarning("ABP CLI has a newer version (" + latestVersion + "). Please update to get the latest features and fixes."); Logger.LogWarning(""); Logger.LogWarning("Update Command: "); Logger.LogWarning(" dotnet tool update -g Volo.Abp.Cli"); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeLocalhostPortStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeLocalhostPortStep.cs new file mode 100644 index 0000000000..e902e245cf --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeLocalhostPortStep.cs @@ -0,0 +1,35 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps +{ + public class ChangeLocalhostPortStep : ProjectBuildPipelineStep + { + public string LaunchSettingsFilePath { get; } + public int[] PortNumbers { get; } + + public ChangeLocalhostPortStep( + string launchSettingsFilePath, + params int[] portNumbers) + { + Check.NotNullOrEmpty(portNumbers, nameof(portNumbers)); + + LaunchSettingsFilePath = launchSettingsFilePath; + PortNumbers = portNumbers; + } + + public override void Execute(ProjectBuildContext context) + { + var launchSettings = context.GetFile(LaunchSettingsFilePath); + var randomPort = RandomHelper.GetRandom(50001, 59990); + var newContent = launchSettings.Content; + + for (var i = 0; i < PortNumbers.Length; i++) + { + newContent = newContent.Replace( + PortNumbers[i].ToString(), + (randomPort + i).ToString() + ); + } + + launchSettings.SetContent(newContent); + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs index 1aa9f5b6ef..e23e0ebe0e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/TemplateInfoProvider.cs @@ -9,15 +9,15 @@ namespace Volo.Abp.Cli.ProjectBuilding { public TemplateInfo GetDefault() { - return Get(MvcApplicationTemplate.TemplateName); + return Get(MvcTemplate.TemplateName); } public TemplateInfo Get(string name) { switch (name) { - case MvcApplicationTemplate.TemplateName: - return new MvcApplicationTemplate(); + case MvcTemplate.TemplateName: + return new MvcTemplate(); case MvcModuleTemplate.TemplateName: return new MvcModuleTemplate(); case ServiceTemplate.TemplateName: diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcApplicationTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcTemplate.cs similarity index 82% rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcApplicationTemplate.cs rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcTemplate.cs index b40d577285..0286a484da 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcApplicationTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/MvcTemplate.cs @@ -4,14 +4,14 @@ using Volo.Abp.Cli.ProjectBuilding.Building.Steps; namespace Volo.Abp.Cli.ProjectBuilding.Templates { - public class MvcApplicationTemplate : TemplateInfo + public class MvcTemplate : TemplateInfo { /// /// "mvc". /// public const string TemplateName = "mvc"; - public MvcApplicationTemplate() + public MvcTemplate() : base(TemplateName, DatabaseProvider.EntityFrameworkCore) { } @@ -21,6 +21,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates var steps = new List(); SwitchDatabaseProvider(context, steps); RemoveOtherDatabaseProviders(context, steps); + ChangeLocalhostPort(steps); return steps; } @@ -47,5 +48,16 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.MongoDB")); } } + + private void ChangeLocalhostPort(List steps) + { + steps.Add( + new ChangeLocalhostPortStep( + "/src/MyCompanyName.MyProjectName.Web/Properties/launchSettings.json", + 53929, + 53932 + ) + ); + } } } \ No newline at end of file