From 72ffa579ac53036e95d2e627762a824841bde922 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Fri, 7 Oct 2022 15:55:49 +0800 Subject: [PATCH] Add MauiChangePortStep --- .../Templates/App/AppTemplateBase.cs | 1 + .../Templates/Maui/MauiChangePortStep.cs | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Maui/MauiChangePortStep.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs index d199aeb663..2ffa12bca7 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs @@ -163,6 +163,7 @@ public abstract class AppTemplateBase : TemplateInfo if (context.BuildArgs.MobileApp == MobileApp.Maui) { steps.Add(new MauiChangeApplicationIdGuidStep()); + steps.Add(new MauiChangePortStep()); } else { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Maui/MauiChangePortStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Maui/MauiChangePortStep.cs new file mode 100644 index 0000000000..2b45d64b19 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Maui/MauiChangePortStep.cs @@ -0,0 +1,80 @@ +using System; +using System.Linq; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.Maui; + +public class MauiChangePortStep : ProjectBuildPipelineStep +{ + public override void Execute(ProjectBuildContext context) + { + var appsettingsFile = context.Files.FirstOrDefault(x => + !x.IsDirectory && + x.Name.EndsWith("aspnet-core/src/MyCompanyName.MyProjectName.Maui/appsettings.json", + StringComparison.InvariantCultureIgnoreCase) + ); + + if (appsettingsFile == null) + { + return; + } + + var ports = GetPorts(context); + + appsettingsFile.NormalizeLineEndings(); + var lines = appsettingsFile.GetLines(); + + for (var i = 1; i < lines.Length; i++) + { + var line = lines[i]; + var previousLine = lines[i-1]; + + if (line.Contains("Authority") && line.Contains("localhost")) + { + line = line.Replace("44305", ports.AuthServerPort); + } + else if (previousLine.Contains("Default") && line.Contains("BaseUrl") && line.Contains("localhost")) + { + line = line.Replace("44305", ports.ApiHostPort); + } + + lines[i] = line; + } + + appsettingsFile.SetLines(lines); + } + + private (string AuthServerPort, string ApiHostPort) GetPorts(ProjectBuildContext context) + { + var authServerPort = string.Empty; + var apiHostPort = string.Empty; + + switch (context.BuildArgs.UiFramework) + { + case UiFramework.Angular: + case UiFramework.Blazor: + authServerPort = "44305"; + apiHostPort = "44305"; + break; + case UiFramework.BlazorServer: + authServerPort = "44308"; + apiHostPort = "44308"; + break; + case UiFramework.Mvc: + case UiFramework.NotSpecified: + authServerPort = "44303"; + apiHostPort = "44303"; + break; + } + + if (context.BuildArgs.ExtraProperties.ContainsKey("separate-identity-server") || + context.BuildArgs.ExtraProperties.ContainsKey("separate-auth-server") || + context.BuildArgs.ExtraProperties.ContainsKey("tiered")) + { + authServerPort = "44301"; + apiHostPort = "44300"; + } + + return (authServerPort, apiHostPort); + } +} \ No newline at end of file