From 504d6495fc44df540e4dca4653e959dc27948510 Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Wed, 22 Jun 2022 10:54:40 +0300 Subject: [PATCH 01/14] cli: add leptonx theme compatibility --- .../Commands/ProjectCreationCommandBase.cs | 50 +++++++++++++------ .../Abp/Cli/ProjectBuilding/Building/Theme.cs | 9 ++-- .../Templates/App/AppProTemplate.cs | 6 ++- .../Templates/App/AppTemplate.cs | 6 ++- .../Templates/App/AppTemplateBase.cs | 6 +-- .../Abp/Cli/Utils/ExceptionMessageHelper.cs | 30 +++++++++++ 6 files changed, 84 insertions(+), 23 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ExceptionMessageHelper.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index c422646337..469eba3089 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -98,7 +98,7 @@ public abstract class ProjectCreationCommandBase Logger.LogInformation("UI Framework: " + uiFramework); } - var theme = uiFramework == UiFramework.None ? (Theme?)null : GetTheme(commandLineArgs); + var theme = uiFramework == UiFramework.None ? (Theme?)null : GetTheme(commandLineArgs, template); if (theme.HasValue) { Logger.LogInformation("Theme: " + theme); @@ -329,7 +329,7 @@ public abstract class ProjectCreationCommandBase return DatabaseProvider.MongoDb; } - throw new CliUsageException("The option you provided for Database Provider is invalid!"); + throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("Database Provider")); } protected virtual void RunGraphBuildForMicroserviceServiceTemplate(ProjectBuildArgs projectArgs) @@ -423,7 +423,7 @@ public abstract class ProjectCreationCommandBase case "oracle": return DatabaseManagementSystem.Oracle; default: - throw new CliUsageException("The option you provided for Database Management System is invalid!"); + throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("Database Management System")); } } @@ -439,7 +439,7 @@ public abstract class ProjectCreationCommandBase case "react-native": return MobileApp.ReactNative; default: - throw new CliUsageException("The option you provided for Mobile App is invalid!"); + throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("Mobile App")); } } @@ -467,23 +467,43 @@ public abstract class ProjectCreationCommandBase case "blazor-server": return UiFramework.BlazorServer; default: - throw new CliUsageException("The option you provided for UI Framework is invalid!"); + throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("UI Framework")); } } - protected virtual Theme GetTheme(CommandLineArgs commandLineArgs) + protected virtual Theme GetTheme(CommandLineArgs commandLineArgs, string template = "app") { - var optionValue = commandLineArgs.Options.GetOrNull(Options.Theme.Long); - switch (optionValue) + var theme = commandLineArgs.Options.GetOrNull(Options.Theme.Long); + theme = theme?.ToLower(); + + Theme GetAppTheme() { - case null: - case "leptonx-lite": - return Theme.LeptonXLite; - case "basic": - return Theme.Basic; - default: - throw new CliUsageException("The option you provided for Theme is invalid!"); + return theme switch + { + null => AppTemplate.DefaultTheme, + "leptonx-lite" => Theme.LeptonXLite, + "basic" => Theme.Basic, + _ => Theme.NotSpecified + }; } + + Theme GetAppProTheme() + { + return theme switch + { + null => AppProTemplate.DefaultTheme, + "leptonx" => Theme.LeptonX, + "lepton" => Theme.Lepton, + _ => Theme.NotSpecified + }; + } + + return template switch + { + AppTemplate.TemplateName or null => GetAppTheme(), + AppProTemplate.TemplateName => GetAppProTheme(), + _ => throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage(Options.Theme.Long)) + }; } protected void ConfigureNpmPackagesForTheme(ProjectBuildArgs projectArgs) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs index bc2ba89589..1ef1c0da55 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Theme.cs @@ -1,7 +1,10 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building; -public enum Theme +public enum Theme : byte { - LeptonXLite = 0, - Basic = 1 + NotSpecified = 0, + Basic = 1, + Lepton = 2, + LeptonXLite = 3, + LeptonX = 4 } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs index 25a4797f7d..d9f32ee834 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppProTemplate.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; public class AppProTemplate : AppTemplateBase { @@ -6,6 +8,8 @@ public class AppProTemplate : AppTemplateBase /// "app-pro". /// public const string TemplateName = "app-pro"; + + public const Theme DefaultTheme = Theme.LeptonX; public AppProTemplate() : base(TemplateName) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs index 8c533b1d94..ae9516f597 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplate.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; public class AppTemplate : AppTemplateBase { @@ -6,6 +8,8 @@ public class AppTemplate : AppTemplateBase /// "app". /// public const string TemplateName = "app"; + + public const Theme DefaultTheme = Theme.LeptonXLite; public AppTemplate() : base(TemplateName) 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 75441af295..2dc0d43da1 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 @@ -184,14 +184,14 @@ public abstract class AppTemplateBase : TemplateInfo return; } - if (context.BuildArgs.Theme != Theme.LeptonXLite) + if (context.BuildArgs.Theme != AppTemplate.DefaultTheme || context.BuildArgs.Theme != AppProTemplate.DefaultTheme) { steps.Add(new ChangeThemeStep()); - RemoveLeptonXThemePackagesFromPackageJsonFiles(steps); + RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, context.BuildArgs.Theme.Value); } } - private void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps) + private void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps, Theme theme) { var packageJsonFilePaths = new List() { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ExceptionMessageHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ExceptionMessageHelper.cs new file mode 100644 index 0000000000..4274993cd1 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ExceptionMessageHelper.cs @@ -0,0 +1,30 @@ +using System; +using System.Text; + +namespace Volo.Abp.Cli.Utils; + +public static class ExceptionMessageHelper +{ + public static string GetInvalidArgExceptionMessage(string args) + { + Check.NotNullOrEmpty(args, nameof(args), minLength: 2); + + var exceptionMessageBuilder = new StringBuilder(); + exceptionMessageBuilder.Append("The option you provided for "); + if (args.Contains(" ")) + { + foreach (var arg in args.Split(' ')) + { + exceptionMessageBuilder.Append(arg.ToPascalCase()); + } + } + else + { + exceptionMessageBuilder.Append(args.ToPascalCase()); + } + + exceptionMessageBuilder.Append(" is invalid!"); + + return exceptionMessageBuilder.ToString(); + } +} \ No newline at end of file From d8ad85b2aa2651c3be06d081631e8e9ab8d9a258 Mon Sep 17 00:00:00 2001 From: Berkan Sasmaz Date: Fri, 24 Jun 2022 13:25:33 +0300 Subject: [PATCH 02/14] cli: add ChangeToLeptonTheme method to ChangeThemeStep --- .../Commands/ProjectCreationCommandBase.cs | 29 ++ .../Building/Steps/ChangeThemeStep.cs | 251 +++++++++++++++++- .../Templates/App/AppTemplateBase.cs | 22 +- 3 files changed, 295 insertions(+), 7 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 469eba3089..364289f60a 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -518,6 +518,16 @@ public abstract class ProjectCreationCommandBase case Theme.Basic: ConfigureNpmPackagesForBasicTheme(projectArgs); break; + case Theme.Lepton: + ConfigureNpmPackagesForLeptonTheme(projectArgs); + break; + case Theme.NotSpecified: + case Theme.LeptonXLite: + case Theme.LeptonX: + case null: + break; + default: + throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage(Options.Theme.Long)); } } @@ -538,6 +548,25 @@ public abstract class ProjectCreationCommandBase ThemePackageAdder.AddAngularPackage(projectArgs.OutputFolder, "@abp/ng.theme.basic", projectArgs.Version); } } + + private void ConfigureNpmPackagesForLeptonTheme(ProjectBuildArgs projectArgs) + { + if (projectArgs.UiFramework is not UiFramework.None or UiFramework.Angular) + { + ThemePackageAdder.AddNpmPackage(projectArgs.OutputFolder, "@volo/abp.aspnetcore.mvc.ui.theme.lepton", projectArgs.Version); + } + + if (projectArgs.UiFramework is UiFramework.BlazorServer) + { + ThemePackageAdder.AddNpmPackage(projectArgs.OutputFolder, "@volo/abp.aspnetcore.components.server.leptontheme", projectArgs.Version); + ThemePackageAdder.AddNpmPackage(projectArgs.OutputFolder, "@volo/abp.aspnetcore.mvc.ui.theme.lepton", projectArgs.Version); + } + + if (projectArgs.UiFramework is UiFramework.Angular) + { + ThemePackageAdder.AddAngularPackage(projectArgs.OutputFolder, "@volo/abp.ng.theme.lepton", projectArgs.Version); + } + } public static class Options { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index 4409f258b3..cc2cbd7411 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -1,5 +1,9 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; +using System.Xml; +using Volo.Abp.Cli.ProjectBuilding.Files; +using Volo.Abp.Cli.Utils; namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; @@ -17,6 +21,9 @@ public class ChangeThemeStep : ProjectBuildPipelineStep case Theme.Basic: ChangeToBasicTheme(context); break; + case Theme.Lepton: + ChangeToLeptonTheme(context); + break; } } @@ -457,6 +464,156 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #endregion } + protected void ChangeToLeptonTheme(ProjectBuildContext context) + { + #region Common + + RenameLeptonXFoldersToLepton(context); + AddLeptonThemeManagementReferenceToProjects(context); + + #endregion + + #region MyCompanyName.MyProjectName.Web + + ChangeThemeToLeptonForMvcPresentationLayer(context, "Web"); + + #endregion + + #region MyCompanyName.MyProjectName.HttpApi.Host + + ChangeThemeToLeptonForMvcPresentationLayer(context, "HttpApi.Host"); + + #endregion + + // Blazor + + #region MyCompanyName.MyProjectName.AuthServer + + ChangeThemeToLeptonForMvcPresentationLayer(context, "AuthServer"); + + #endregion + + #region Angular + + ReplaceImportPackage( + context, + "/angular/src/app/app.module.ts", + "@volosoft/abp.ng.theme.lepton-x", + "@volo/abp.ng.theme.lepton" + ); + + RemoveLinesByStatement( + context, + "/angular/src/app/app.module.ts", + "SideMenuLayoutModule" + ); + + ReplaceMethodNames( + context, + "/angular/src/app/app.module.ts", + "ThemeLeptonXModule", + "ThemeLeptonModule" + ); + + RemoveLinesByStatement( + context, + "/angular/angular.json", + "node_modules/bootstrap-icons/font/bootstrap-icons.css" + ); + + #endregion + + // SingleLayers + // Microservices + } + + private void ChangeThemeToLeptonForMvcPresentationLayer(ProjectBuildContext context, string projectName) + { + var projectPath = $"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj"; + var projectFile = context.Files.FirstOrDefault(x => x.Name.Contains(projectPath)); + if (projectFile is null) + { + return; + } + var moduleFile = ConvertProjectFileToModuleFile(context, projectFile); + + ReplacePackageReferenceWithProjectReference( + context, + projectFile.Name, + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" + ); + + ChangeNamespaceAndKeyword( + context, + moduleFile.Name, + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", + "LeptonXThemeBundles.Styles.Global", + "LeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + moduleFile.Name, + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", + "AbpAspNetCoreMvcUiLeptonXThemeModule", + "AbpAspNetCoreMvcUiLeptonThemeModule" + ); + } + + private void AddLeptonThemeManagementReferenceToProjects(ProjectBuildContext context) + { + var relatedProjectsNames = new Dictionary(); + relatedProjectsNames.Add("Domain", "MyCompanyName.MyProjectName.Domain.csproj"); + relatedProjectsNames.Add("Domain.Shared", "MyCompanyName.MyProjectName.Domain.Shared.csproj"); + relatedProjectsNames.Add("Application", "MyCompanyName.MyProjectName.Application.csproj"); + relatedProjectsNames.Add("Application.Contracts", "MyCompanyName.MyProjectName.Application.Contracts.csproj"); + relatedProjectsNames.Add("Blazor", "MyCompanyName.MyProjectName.Blazor.csproj"); + relatedProjectsNames.Add("Blazor.Server", "MyCompanyName.MyProjectName.Blazor.Server"); + relatedProjectsNames.Add("HttpApi", "MyCompanyName.MyProjectName.HttpApi.csproj"); + relatedProjectsNames.Add("HttpApi.Client", "MyCompanyName.MyProjectName.HttpApi.Client.csproj"); + relatedProjectsNames.Add("Web.Host", "MyCompanyName.MyProjectName.Web.Host.csproj"); + relatedProjectsNames.Add("Web", "MyCompanyName.MyProjectName.Web.csproj"); + + foreach (var relatedProjectName in relatedProjectsNames) + { + var reference = $@"..\..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.{relatedProjectName.Key}\Volo.Abp.LeptonTheme.Management.{relatedProjectName.Key}.csproj"; + var projectFile = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(relatedProjectName.Value) && f.Name.Contains(".csproj")); + if (projectFile is null) + { + continue; + } + relatedProjectsNames[relatedProjectName.Key] = projectFile.Name; + + AddProjectReference(projectFile, reference); + + AddModuleDependency(ConvertProjectFileToModuleFile(context, projectFile), + $"LeptonThemeManagement{ConvertProjectNameToModuleName(relatedProjectName.Key)}Module"); + } + } + + private void AddModuleDependency(FileEntry moduleFile, string dependency) + { + var lines = moduleFile.GetLines(); + + for (var i = 0; i < lines.Length; i++) + { + if (lines[i].Contains("namespace MyCompanyName.MyProjectName")) + { + lines[i - 1] = lines[i - 1] + "using Volo.Abp.LeptonTheme.Management;" + Environment.NewLine; + } + + if (lines[i].Contains("public class MyProjectName") && lines[i-1].Contains(")]")) + { + lines[i - 2] = lines[i - 2] + "," + Environment.NewLine + $"\ttypeof({dependency})"; + } + } + + moduleFile.SetLines(lines); + } + protected void ReplacePackageReferenceWithProjectReference( ProjectBuildContext context, string targetProjectFilePath, @@ -620,4 +777,96 @@ public class ChangeThemeStep : ProjectBuildPipelineStep file.SetLines(lines); } + + private static void AddProjectReference(FileEntry file, string reference) + { + if (!file.Name.Contains(".csproj")) + { + return; + } + + var doc = new XmlDocument() { PreserveWhitespace = true }; + using (var stream = StreamHelper.GenerateStreamFromString(file.Content)) + { + doc.Load(stream); + + var itemGroupNodes = doc.SelectNodes("/Project/ItemGroup"); + XmlNode itemGroupNode = null; + + if (itemGroupNodes == null || itemGroupNodes.Count < 1) + { + var projectNodes = doc.SelectNodes("/Project"); + var projectNode = projectNodes![0]; + + itemGroupNode = doc.CreateElement("ItemGroup"); + projectNode.AppendChild(itemGroupNode); + } + else + { + for (var i = 0; i < itemGroupNodes.Count; i++) + { + if (itemGroupNode is not null) + { + break; + } + for (var j = 0; j < itemGroupNodes[i].ChildNodes.Count; j++) + { + if (itemGroupNodes[i].ChildNodes[j].Name != "ProjectReference" || itemGroupNodes[i].ChildNodes[j].NodeType != XmlNodeType.Element) + { + continue; + } + + itemGroupNode = itemGroupNodes[i]; + break; + } + } + } + + itemGroupNode ??= itemGroupNodes[0]; + + var packageReferenceNode = doc.CreateElement("ProjectReference"); + + var includeAttr = doc.CreateAttribute("Include"); + includeAttr.Value = reference; + packageReferenceNode.Attributes.Append(includeAttr); + + itemGroupNode.AppendChild(doc.CreateTextNode("\t")); + itemGroupNode.AppendChild(packageReferenceNode); + itemGroupNode.AppendChild(doc.CreateTextNode(Environment.NewLine)); + file.SetContent(doc.OuterXml); + } + } + + private static FileEntry ConvertProjectFileToModuleFile(ProjectBuildContext context, FileEntry projectFile) + { + var splittedProjectFileName = projectFile.Name.RemovePostFix("/").Split("/"); + var fileName = splittedProjectFileName.Last(); + + splittedProjectFileName = splittedProjectFileName.Take(splittedProjectFileName.Length - 1).ToArray(); + + fileName = fileName + .Replace("MyCompanyName.", "") + .Replace(".csproj", "Module") + .Replace(".", ""); + + fileName = ConvertProjectNameToModuleName(fileName); + + return context.Files.First(f => f.Name.Contains(splittedProjectFileName.Last() + "/" + fileName)); + } + + private static string ConvertProjectNameToModuleName(string moduleName) + { + moduleName = moduleName.Replace(".", ""); + + return moduleName; + } + + private static void RenameLeptonXFoldersToLepton(ProjectBuildContext context) + { + var leptonXFiles = context.Files.Where(x => x.Name.Contains("LeptonX") && x.IsDirectory); + foreach (var file in leptonXFiles) + { + new MoveFolderStep(file.Name, file.Name.Replace("LeptonX", "Lepton")).Execute(context); + } + } } \ No newline at end of file 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 2dc0d43da1..e1dc2f6018 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 @@ -187,11 +187,11 @@ public abstract class AppTemplateBase : TemplateInfo if (context.BuildArgs.Theme != AppTemplate.DefaultTheme || context.BuildArgs.Theme != AppProTemplate.DefaultTheme) { steps.Add(new ChangeThemeStep()); - RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, context.BuildArgs.Theme.Value); + RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, this.IsPro()); } } - private void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps, Theme theme) + private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps, bool isPro) { var packageJsonFilePaths = new List() { @@ -218,20 +218,30 @@ public abstract class AppTemplateBase : TemplateInfo "/angular/package.json" }; + var mvcUiPackageName = "@abp/aspnetcore.mvc.ui.theme.leptonxlite"; + var blazorServerUiPackageName = "@abp/aspnetcore.components.server.leptonxlitetheme"; + var ngUiPackageName = "@abp/ng.theme.lepton-x"; + if (isPro) + { + mvcUiPackageName = "@volo/abp.aspnetcore.mvc.ui.theme.leptonx"; + blazorServerUiPackageName = "@volo/aspnetcore.components.server.leptonxtheme"; + ngUiPackageName = "@volosoft/abp.ng.theme.lepton-x"; + } + foreach (var packageJsonFilePath in packageJsonFilePaths) { - steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFilePath, "@abp/aspnetcore.mvc.ui.theme.leptonxlite")); + steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFilePath, mvcUiPackageName)); } foreach (var blazorServerPackageJsonFilePath in blazorServerPackageJsonFilePaths) { - steps.Add(new RemoveDependencyFromPackageJsonFileStep(blazorServerPackageJsonFilePath, "@abp/aspnetcore.mvc.ui.theme.leptonxlite")); - steps.Add(new RemoveDependencyFromPackageJsonFileStep(blazorServerPackageJsonFilePath, "@abp/aspnetcore.components.server.leptonxlitetheme")); + steps.Add(new RemoveDependencyFromPackageJsonFileStep(blazorServerPackageJsonFilePath, mvcUiPackageName)); + steps.Add(new RemoveDependencyFromPackageJsonFileStep(blazorServerPackageJsonFilePath, blazorServerUiPackageName)); } foreach (var angularPackageJsonFilePath in angularPackageJsonFilePaths) { - steps.Add(new RemoveDependencyFromPackageJsonFileStep(angularPackageJsonFilePath, "@abp/ng.theme.lepton-x")); + steps.Add(new RemoveDependencyFromPackageJsonFileStep(angularPackageJsonFilePath, ngUiPackageName)); steps.Add(new RemoveDependencyFromPackageJsonFileStep(angularPackageJsonFilePath, "bootstrap-icons")); } } From 3b164f5378b3e5959797c3a84bd85a37164fa233 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Wed, 6 Jul 2022 16:16:04 +0300 Subject: [PATCH 03/14] Add `--theme-style` option to CLI --- .../Commands/ProjectCreationCommandBase.cs | 57 ++++++++++++---- .../Building/Steps/ChangeThemeStyleStep.cs | 68 +++++++++++++++++++ .../ProjectBuilding/Building/ThemeStyle.cs | 8 +++ .../Cli/ProjectBuilding/ProjectBuildArgs.cs | 6 +- .../Templates/App/AppTemplateBase.cs | 19 ++---- .../Abp/Cli/Utils/ExceptionMessageHelper.cs | 26 +------ 6 files changed, 132 insertions(+), 52 deletions(-) create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs create mode 100644 framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ThemeStyle.cs diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 260f752f29..d88463d56b 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -103,12 +103,18 @@ public abstract class ProjectCreationCommandBase Logger.LogInformation("UI Framework: " + uiFramework); } - var theme = uiFramework == UiFramework.None ? (Theme?)null : GetTheme(commandLineArgs, template); + var theme = uiFramework == UiFramework.None ? (Theme?)null : GetThemeByTemplateOrNull(commandLineArgs, template); if (theme.HasValue) { Logger.LogInformation("Theme: " + theme); } + var themeStyle = theme.HasValue ? GetThemeStyleOrNull(commandLineArgs) : (ThemeStyle?)null; + if(themeStyle.HasValue) + { + Logger.LogInformation("Theme Style: " + themeStyle); + } + var publicWebSite = uiFramework != UiFramework.None && commandLineArgs.Options.ContainsKey(Options.PublicWebSite.Long); if (publicWebSite) { @@ -200,7 +206,8 @@ public abstract class ProjectCreationCommandBase commandLineArgs.Options, connectionString, pwa, - theme + theme, + themeStyle ); } @@ -338,7 +345,7 @@ public abstract class ProjectCreationCommandBase return DatabaseProvider.MongoDb; } - throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("Database Provider")); + throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage("Database Provider")); } protected virtual async Task RunGraphBuildForMicroserviceServiceTemplate(ProjectBuildArgs projectArgs) @@ -446,7 +453,7 @@ public abstract class ProjectCreationCommandBase case "oracle": return DatabaseManagementSystem.Oracle; default: - throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("Database Management System")); + throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage("Database Management System")); } } @@ -462,7 +469,7 @@ public abstract class ProjectCreationCommandBase case "react-native": return MobileApp.ReactNative; default: - throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("Mobile App")); + throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage("Mobile App")); } } @@ -490,14 +497,20 @@ public abstract class ProjectCreationCommandBase case "blazor-server": return UiFramework.BlazorServer; default: - throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage("UI Framework")); + throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage("UI Framework")); } } - protected virtual Theme GetTheme(CommandLineArgs commandLineArgs, string template = "app") + protected virtual Theme GetThemeByTemplateOrNull(CommandLineArgs commandLineArgs, string template = "app") { - var theme = commandLineArgs.Options.GetOrNull(Options.Theme.Long); - theme = theme?.ToLower(); + var theme = commandLineArgs.Options.GetOrNull(Options.Theme.Long)?.ToLower(); + + return template switch + { + AppTemplate.TemplateName or null => GetAppTheme(), + AppProTemplate.TemplateName => GetAppProTheme(), + _ => throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage(Options.Theme.Long)) + }; Theme GetAppTheme() { @@ -520,12 +533,23 @@ public abstract class ProjectCreationCommandBase _ => Theme.NotSpecified }; } + } + + protected virtual ThemeStyle? GetThemeStyleOrNull(CommandLineArgs commandLineArgs, Theme theme) + { + if(theme != Theme.LeptonX) + { + return null; + } - return template switch + var themeStyle = commandLineArgs.Options.GetOrNull(Options.ThemeStyle.Long)?.ToLower(); + return themeStyle switch { - AppTemplate.TemplateName or null => GetAppTheme(), - AppProTemplate.TemplateName => GetAppProTheme(), - _ => throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage(Options.Theme.Long)) + null => ThemeStyle.NotSpecified, + "dim" => ThemeStyle.Dim, + "light" => ThemeStyle.Light, + "dark" => ThemeStyle.Dark, + _ => throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage(Options.ThemeStyle.Long)) }; } @@ -550,7 +574,7 @@ public abstract class ProjectCreationCommandBase case null: break; default: - throw new CliUsageException(ExceptionMessageHelper.GetInvalidArgExceptionMessage(Options.Theme.Long)); + throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage(Options.Theme.Long)); } } @@ -687,5 +711,10 @@ public abstract class ProjectCreationCommandBase { public const string Long = "theme"; } + + public static class ThemeStyle + { + public const string Long = "theme-style"; + } } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs new file mode 100644 index 0000000000..7562a34385 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs @@ -0,0 +1,68 @@ +using System.Collections.Generic; + +namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; + +//TODO: Remove this step and move it to the ChangeThemeStep.cs? +public class ChangeThemeStyleStep : ProjectBuildPipelineStep +{ + public override void Execute(ProjectBuildContext context) + { + if (!context.BuildArgs.Theme.HasValue || context.BuildArgs.Theme != Theme.LeptonX) + { + return; + } + + switch (context.BuildArgs.ThemeStyle) + { + case ThemeStyle.Light: + ChangeThemeStyle(context, themeStyleName: "Light"); + break; + case ThemeStyle.Dark: + ChangeThemeStyle(context, themeStyleName: "Dark"); + break; + } + } + + private void ChangeThemeStyle(ProjectBuildContext context, string themeStyleName) + { + var defaultThemeStyleName = "LeptonXStyleNames.Dim"; + var newThemeStyleName = $"LeptonXStyleNames.{themeStyleName}"; + + var filePaths = new List + { + "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs", + "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs", + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", + "/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs" + }; + + foreach(var filePath in filePaths) + { + ReplaceThemeStyleName(context, filePath, defaultThemeStyleName, newThemeStyleName); + } + } + + protected void ReplaceThemeStyleName(ProjectBuildContext context, string filePath, string oldThemeStyleName, string newThemeStyleName) + { + var file = context.FindFile(filePath); + if (file == null) + { + return; + } + + file.NormalizeLineEndings(); + + var lines = file.GetLines(); + for (var i = 0; i < lines.Length; i++) + { + if (lines[i].Contains(oldThemeStyleName)) + { + lines[i] = lines[i].Replace(oldThemeStyleName, newThemeStyleName); + } + } + + file.SetLines(lines); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ThemeStyle.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ThemeStyle.cs new file mode 100644 index 0000000000..e9a8804f70 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/ThemeStyle.cs @@ -0,0 +1,8 @@ +namespace Volo.Abp.Cli.ProjectBuilding.Building; +public enum ThemeStyle : byte +{ + NotSpecified = 0, + Dim = 1, + Light = 2, + Dark = 3 +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs index 18edb71863..b4b4429767 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs @@ -44,6 +44,8 @@ public class ProjectBuildArgs public Theme? Theme { get; set; } + public ThemeStyle? ThemeStyle { get; set; } + [NotNull] public Dictionary ExtraProperties { get; set; } @@ -63,7 +65,8 @@ public class ProjectBuildArgs Dictionary extraProperties = null, [CanBeNull] string connectionString = null, bool pwa = false, - Theme? theme = null) + Theme? theme = null, + ThemeStyle? themeStyle = null) { SolutionName = Check.NotNull(solutionName, nameof(solutionName)); TemplateName = templateName; @@ -81,5 +84,6 @@ public class ProjectBuildArgs ConnectionString = connectionString; Pwa = pwa; Theme = theme; + ThemeStyle = themeStyle; } } 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 6b77af00c8..d8a37c71fd 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 @@ -184,14 +184,15 @@ public abstract class AppTemplateBase : TemplateInfo return; } - if (context.BuildArgs.Theme != AppTemplate.DefaultTheme || context.BuildArgs.Theme != AppProTemplate.DefaultTheme) + if (context.BuildArgs.Theme is not AppTemplate.DefaultTheme or AppProTemplate.DefaultTheme) { steps.Add(new ChangeThemeStep()); - RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, this.IsPro()); + steps.Add(new ChangeThemeStyleStep()); + RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, IsPro()); } } - private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps, bool isPro) + private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps, bool isProTemplate) { var packageJsonFilePaths = new List() { @@ -218,15 +219,9 @@ public abstract class AppTemplateBase : TemplateInfo "/angular/package.json" }; - var mvcUiPackageName = "@abp/aspnetcore.mvc.ui.theme.leptonxlite"; - var blazorServerUiPackageName = "@abp/aspnetcore.components.server.leptonxlitetheme"; - var ngUiPackageName = "@abp/ng.theme.lepton-x"; - if (isPro) - { - mvcUiPackageName = "@volo/abp.aspnetcore.mvc.ui.theme.leptonx"; - blazorServerUiPackageName = "@volo/aspnetcore.components.server.leptonxtheme"; - ngUiPackageName = "@volosoft/abp.ng.theme.lepton-x"; - } + var mvcUiPackageName = isProTemplate ? "@volo/abp.aspnetcore.mvc.ui.theme.leptonx" : "@abp/aspnetcore.mvc.ui.theme.leptonxlite"; + var blazorServerUiPackageName = isProTemplate ? "@volo/aspnetcore.components.server.leptonxtheme" : "@abp/aspnetcore.components.server.leptonxlitetheme"; + var ngUiPackageName = isProTemplate ? "@volosoft/abp.ng.theme.lepton-x" : "@abp/ng.theme.lepton-x"; foreach (var packageJsonFilePath in packageJsonFilePaths) { diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ExceptionMessageHelper.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ExceptionMessageHelper.cs index 4274993cd1..dd78be14db 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ExceptionMessageHelper.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Utils/ExceptionMessageHelper.cs @@ -1,30 +1,6 @@ -using System; -using System.Text; - namespace Volo.Abp.Cli.Utils; public static class ExceptionMessageHelper { - public static string GetInvalidArgExceptionMessage(string args) - { - Check.NotNullOrEmpty(args, nameof(args), minLength: 2); - - var exceptionMessageBuilder = new StringBuilder(); - exceptionMessageBuilder.Append("The option you provided for "); - if (args.Contains(" ")) - { - foreach (var arg in args.Split(' ')) - { - exceptionMessageBuilder.Append(arg.ToPascalCase()); - } - } - else - { - exceptionMessageBuilder.Append(args.ToPascalCase()); - } - - exceptionMessageBuilder.Append(" is invalid!"); - - return exceptionMessageBuilder.ToString(); - } + public static string GetInvalidOptionExceptionMessage(string optionName) => $"The option you provided for {optionName} is invalid!"; } \ No newline at end of file From 36fb7e5685be25880cdf15f0f102f69a99cb3ce5 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Thu, 14 Jul 2022 09:43:31 +0300 Subject: [PATCH 04/14] Update ProjectCreationCommandBase.cs --- .../Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index 75b2e2ef23..d4cd8201ff 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -109,7 +109,7 @@ public abstract class ProjectCreationCommandBase Logger.LogInformation("Theme: " + theme); } - var themeStyle = theme.HasValue ? GetThemeStyleOrNull(commandLineArgs) : (ThemeStyle?)null; + var themeStyle = theme.HasValue ? GetThemeStyleOrNull(commandLineArgs, theme.Value) : (ThemeStyle?)null; if(themeStyle.HasValue) { Logger.LogInformation("Theme Style: " + themeStyle); @@ -596,7 +596,6 @@ public abstract class ProjectCreationCommandBase case Theme.NotSpecified: case Theme.LeptonXLite: case Theme.LeptonX: - case null: break; default: throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage(Options.Theme.Long)); From 36d2d2358e9d98d43dffb76ab90219462f8e5dc6 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Thu, 14 Jul 2022 10:19:46 +0300 Subject: [PATCH 05/14] CLI: Check if it's the default theme for templates --- .../Commands/ProjectCreationCommandBase.cs | 15 +++++------ .../Templates/App/AppNoLayersProTemplate.cs | 6 ++++- .../Templates/App/AppNoLayersTemplate.cs | 6 ++++- .../Templates/App/AppTemplateBase.cs | 26 +++++++++++++------ .../Microservice/MicroserviceProTemplate.cs | 6 ++++- 5 files changed, 40 insertions(+), 19 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index d4cd8201ff..fc621cdd46 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -526,23 +526,22 @@ public abstract class ProjectCreationCommandBase } } - protected virtual Theme GetThemeByTemplateOrNull(CommandLineArgs commandLineArgs, string template = "app") + protected virtual Theme? GetThemeByTemplateOrNull(CommandLineArgs commandLineArgs, string template = "app") { var theme = commandLineArgs.Options.GetOrNull(Options.Theme.Long)?.ToLower(); return template switch { - AppTemplate.TemplateName or null => GetAppTheme(), - AppProTemplate.TemplateName => GetAppProTheme(), - _ => throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage(Options.Theme.Long)) + AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName => GetAppTheme(), + AppProTemplate.TemplateName or AppNoLayersProTemplate.TemplateName or MicroserviceProTemplate.TemplateName => GetAppProTheme(), + _ => null }; Theme GetAppTheme() { return theme switch { - null => AppTemplate.DefaultTheme, - "leptonx-lite" => Theme.LeptonXLite, + null or "leptonx-lite" => Theme.LeptonXLite, "basic" => Theme.Basic, _ => Theme.NotSpecified }; @@ -552,9 +551,9 @@ public abstract class ProjectCreationCommandBase { return theme switch { - null => AppProTemplate.DefaultTheme, - "leptonx" => Theme.LeptonX, + null or "leptonx" => Theme.LeptonX, "lepton" => Theme.Lepton, + "basic" => Theme.Basic, _ => Theme.NotSpecified }; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersProTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersProTemplate.cs index 7e7be0143f..73f00882bf 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersProTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersProTemplate.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; public class AppNoLayersProTemplate : AppNoLayersTemplateBase { @@ -6,6 +8,8 @@ public class AppNoLayersProTemplate : AppNoLayersTemplateBase /// "app-nolayers-pro". /// public const string TemplateName = "app-nolayers-pro"; + + public const Theme DefaultTheme = Theme.LeptonX; public AppNoLayersProTemplate() : base(TemplateName) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs index 24119c43f2..d8bcdfe3f3 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplate.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; public class AppNoLayersTemplate : AppNoLayersTemplateBase { @@ -7,6 +9,8 @@ public class AppNoLayersTemplate : AppNoLayersTemplateBase /// public const string TemplateName = "app-nolayers"; + public const Theme DefaultTheme = Theme.LeptonXLite; + public AppNoLayersTemplate() : base(TemplateName) { 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 d8a37c71fd..e3d70c999f 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 @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; +using System.Linq; using NuGet.Versioning; using Volo.Abp.Cli.Commands; using Volo.Abp.Cli.ProjectBuilding.Building; using Volo.Abp.Cli.ProjectBuilding.Building.Steps; +using Volo.Abp.Cli.ProjectBuilding.Templates.Microservice; namespace Volo.Abp.Cli.ProjectBuilding.Templates.App; @@ -179,19 +181,27 @@ public abstract class AppTemplateBase : TemplateInfo protected void ConfigureTheme(ProjectBuildContext context, List steps) { - if (!context.BuildArgs.Theme.HasValue) + if (!context.BuildArgs.Theme.HasValue || IsDefaultThemeForTemplate(context.BuildArgs.Theme.Value)) { return; } - - if (context.BuildArgs.Theme is not AppTemplate.DefaultTheme or AppProTemplate.DefaultTheme) - { - steps.Add(new ChangeThemeStep()); - steps.Add(new ChangeThemeStyleStep()); - RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, IsPro()); - } + + steps.Add(new ChangeThemeStep()); + steps.Add(new ChangeThemeStyleStep()); + RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, isProTemplate: IsPro()); } + private static bool IsDefaultThemeForTemplate(Theme theme) + { + var defaultThemesForTemplates = new[] + { + AppTemplate.DefaultTheme, AppProTemplate.DefaultTheme, AppNoLayersTemplate.DefaultTheme, + AppNoLayersProTemplate.DefaultTheme, MicroserviceProTemplate.DefaultTheme + }; + + return defaultThemesForTemplates.Contains(theme); + } + private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps, bool isProTemplate) { var packageJsonFilePaths = new List() diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceProTemplate.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceProTemplate.cs index 6741a142dd..43b0884835 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceProTemplate.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceProTemplate.cs @@ -1,4 +1,6 @@ -namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice; +using Volo.Abp.Cli.ProjectBuilding.Building; + +namespace Volo.Abp.Cli.ProjectBuilding.Templates.Microservice; public class MicroserviceProTemplate : MicroserviceTemplateBase { @@ -7,6 +9,8 @@ public class MicroserviceProTemplate : MicroserviceTemplateBase /// public const string TemplateName = "microservice-pro"; + public const Theme DefaultTheme = Theme.LeptonX; + public MicroserviceProTemplate() : base(TemplateName) { From 10454ec7593a69fb5d03ef9db0e79541cb367685 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Thu, 14 Jul 2022 17:35:54 +0300 Subject: [PATCH 06/14] CLI: Change theme by option for app-nolayers template --- .../Commands/ProjectCreationCommandBase.cs | 14 +- .../Building/Steps/ChangeThemeStep.cs | 497 +++++++++++++++++- .../Building/Steps/ChangeThemeStyleStep.cs | 5 +- 3 files changed, 477 insertions(+), 39 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs index fc621cdd46..026b4ca48c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs @@ -541,9 +541,9 @@ public abstract class ProjectCreationCommandBase { return theme switch { - null or "leptonx-lite" => Theme.LeptonXLite, + // null or "leptonx-lite" => Theme.LeptonXLite, "basic" => Theme.Basic, - _ => Theme.NotSpecified + _ => Theme.LeptonXLite }; } @@ -551,10 +551,10 @@ public abstract class ProjectCreationCommandBase { return theme switch { - null or "leptonx" => Theme.LeptonX, + // null or "leptonx" => Theme.LeptonX, "lepton" => Theme.Lepton, "basic" => Theme.Basic, - _ => Theme.NotSpecified + _ => Theme.LeptonX //TODO: default??? }; } } @@ -569,11 +569,11 @@ public abstract class ProjectCreationCommandBase var themeStyle = commandLineArgs.Options.GetOrNull(Options.ThemeStyle.Long)?.ToLower(); return themeStyle switch { - null => ThemeStyle.NotSpecified, - "dim" => ThemeStyle.Dim, + // null => ThemeStyle.NotSpecified, TODO: remove it!!! + "dim" or null => ThemeStyle.Dim, "light" => ThemeStyle.Light, "dark" => ThemeStyle.Dark, - _ => throw new CliUsageException(ExceptionMessageHelper.GetInvalidOptionExceptionMessage(Options.ThemeStyle.Long)) + _ => null }; } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index cc2cbd7411..70fd841c5f 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -7,6 +7,7 @@ using Volo.Abp.Cli.Utils; namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; +//TODO: refactor!!! public class ChangeThemeStep : ProjectBuildPipelineStep { public override void Execute(ProjectBuildContext context) @@ -27,6 +28,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } } + //TODO: make it more dynamic to support leptonx to basic theme transition!!! protected void ChangeToBasicTheme(ProjectBuildContext context) { #region MyCompanyName.MyProjectName.Web @@ -185,6 +187,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #endregion + //TODO: refactor!!! (same with blazor.server except paths) #region MyCompanyName.MyProjectName.Blazor.Server.Tiered ReplacePackageReferenceWithProjectReference( @@ -460,6 +463,12 @@ public class ChangeThemeStep : ProjectBuildPipelineStep "ThemeLeptonXModule", "ThemeBasicModule" ); + + RemoveLinesByStatement( + context, + "/angular/angular.json", + "node_modules/bootstrap-icons/font/bootstrap-icons.css" + ); #endregion } @@ -468,28 +477,191 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { #region Common - RenameLeptonXFoldersToLepton(context); + RenameLeptonXFolders(context, folderName: "Lepton"); AddLeptonThemeManagementReferenceToProjects(context); #endregion #region MyCompanyName.MyProjectName.Web - ChangeThemeToLeptonForMvcPresentationLayer(context, "Web"); + ChangeThemeToLeptonForMvc(context, "Web"); #endregion #region MyCompanyName.MyProjectName.HttpApi.Host - ChangeThemeToLeptonForMvcPresentationLayer(context, "HttpApi.Host"); + ChangeThemeToLeptonForMvc(context, "HttpApi.Host"); + + #endregion + + #region MyCompanyName.MyProjectName.Blazor + + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", + "Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXTheme", + @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme\Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme.csproj" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", + "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", + "AbpAspNetCoreComponentsWebAssemblyLeptonXThemeModule", + "AbpAspNetCoreComponentsWebAssemblyLeptonThemeModule" + ); #endregion + + #region MyCompanyName.MyProjectName.Blazor.Server + + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" + ); + + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", + "AbpAspNetCoreComponentsServerLeptonXThemeModule", + "AbpAspNetCoreComponentsServerLeptonThemeModule" + ); - // Blazor + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", + "AbpAspNetCoreMvcUiLeptonXThemeModule", + "AbpAspNetCoreMvcUiLeptonThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "LeptonXThemeBundles.Styles.Global", + "LeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", + "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "BlazorLeptonXThemeBundles.Scripts.Global", + "BlazorLeptonThemeBundles.Scripts.Global" + ); + + #endregion + + //TODO: refactor!!! (same with blazor.server except paths) + #region MyCompanyName.MyProjectName.Blazor.Server.Tiered + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" + ); + + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", + "AbpAspNetCoreComponentsServerLeptonXThemeModule", + "AbpAspNetCoreComponentsServerLeptonThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", + "AbpAspNetCoreMvcUiLeptonXThemeModule", + "AbpAspNetCoreMvcUiLeptonThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "LeptonXThemeBundles.Styles.Global", + "LeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", + "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "BlazorLeptonXThemeBundles.Scripts.Global", + "BlazorLeptonThemeBundles.Scripts.Global" + ); + + #endregion + #region MyCompanyName.MyProjectName.AuthServer - ChangeThemeToLeptonForMvcPresentationLayer(context, "AuthServer"); + ChangeThemeToLeptonForMvc(context, "AuthServer"); #endregion @@ -523,11 +695,267 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #endregion - // SingleLayers + //TODO: refactor!!! + // Single-Layers + + #region MyCompanyName.MyProjectName.Web.Mvc + + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.csproj", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" + ); + + var file = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(@"/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.csproj") && f.Name.Contains(".csproj")); + if (file != null) + { + AddProjectReference(file, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Web\Volo.Abp.LeptonTheme.Management.Web.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Web")}Module"); + + AddProjectReference(file, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.HttpApi\Volo.Abp.LeptonTheme.Management.HttpApi.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file), $"LeptonThemeManagement{ConvertProjectNameToModuleName("HttpApi")}Module", underManagementFolder: false); + + AddProjectReference(file, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Application\Volo.Abp.LeptonTheme.Management.Application.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Application")}Module"); + } + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyProjectNameWebModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", + "AbpAspNetCoreMvcUiLeptonXThemeModule", + "AbpAspNetCoreMvcUiLeptonThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyProjectNameWebModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", + "LeptonXThemeBundles.Styles.Global", + "LeptonThemeBundles.Styles.Global" + ); + + #endregion + + #region MyCompanyName.MyProjectName.Web.Mvc.Mongo + + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc.Mongo/MyCompanyName.MyProjectName.Web.Mvc.Mongo.csproj", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" + ); + + var file2 = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(@"/aspnet-core/src/MMyCompanyName.MyProjectName.Web.Mvc.Mongo/MyCompanyName.MyProjectName.Web.Mvc.Mongo.csproj") && f.Name.Contains(".csproj")); + if (file2 != null) + { + AddProjectReference(file2, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Web\Volo.Abp.LeptonTheme.Management.Web.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file2), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Web")}Module"); + + AddProjectReference(file2, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.HttpApi\Volo.Abp.LeptonTheme.Management.HttpApi.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file2), $"LeptonThemeManagement{ConvertProjectNameToModuleName("HttpApi")}Module", underManagementFolder: false); + + AddProjectReference(file2, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Application\Volo.Abp.LeptonTheme.Management.Application.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file2), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Application")}Module"); + } + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc.Mongo/MyProjectNameWebModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", + "AbpAspNetCoreMvcUiLeptonXThemeModule", + "AbpAspNetCoreMvcUiLeptonThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc.Mongo/MyProjectNameWebModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", + "LeptonXThemeBundles.Styles.Global", + "LeptonThemeBundles.Styles.Global" + ); + + #endregion + + #region MyCompanyName.MyProjectName.Blazor.Server - (app-nolayers) + + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" + ); + + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" + ); + + var file3 = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(@"/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj") && f.Name.Contains(".csproj")); + if (file3 != null) + { + AddProjectReference(file3, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Blazor.Server\Volo.Abp.LeptonTheme.Management.Blazor.Server.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file3), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Blazor.Server")}Module"); + + AddProjectReference(file3, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.HttpApi\Volo.Abp.LeptonTheme.Management.HttpApi.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file3), $"LeptonThemeManagement{ConvertProjectNameToModuleName("HttpApi")}Module", underManagementFolder: false); + + AddProjectReference(file3, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Application\Volo.Abp.LeptonTheme.Management.Application.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file3), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Application")}Module"); + } + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", + "AbpAspNetCoreComponentsServerLeptonXThemeModule", + "AbpAspNetCoreComponentsServerLeptonThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", + "AbpAspNetCoreMvcUiLeptonXThemeModule", + "AbpAspNetCoreMvcUiLeptonThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "LeptonXThemeBundles.Styles.Global", + "LeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", + "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "BlazorLeptonXThemeBundles.Scripts.Global", + "BlazorLeptonThemeBundles.Scripts.Global" + ); + + #endregion + + #region MyCompanyName.MyProjectName.Blazor.Server.Mongo + + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" + ); + + ReplacePackageReferenceWithProjectReference( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" + ); + + var file4 = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(@"/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj") && f.Name.Contains(".csproj")); + if (file4 != null) + { + AddProjectReference(file4, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Blazor.Server\Volo.Abp.LeptonTheme.Management.Blazor.Server.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file4), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Blazor.Server")}Module"); + + AddProjectReference(file4, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.HttpApi\Volo.Abp.LeptonTheme.Management.HttpApi.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file4), $"LeptonThemeManagement{ConvertProjectNameToModuleName("HttpApi")}Module", underManagementFolder: false); + + AddProjectReference(file4, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Application\Volo.Abp.LeptonTheme.Management.Application.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file4), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Application")}Module"); + } + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", + "AbpAspNetCoreComponentsServerLeptonXThemeModule", + "AbpAspNetCoreComponentsServerLeptonThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", + "AbpAspNetCoreMvcUiLeptonXThemeModule", + "AbpAspNetCoreMvcUiLeptonThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "LeptonXThemeBundles.Styles.Global", + "LeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", + "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "BlazorLeptonXThemeBundles.Scripts.Global", + "BlazorLeptonThemeBundles.Scripts.Global" + ); + + #endregion + // Microservices } - private void ChangeThemeToLeptonForMvcPresentationLayer(ProjectBuildContext context, string projectName) + private void ChangeThemeToLeptonForMvc(ProjectBuildContext context, string projectName) { var projectPath = $"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj"; var projectFile = context.Files.FirstOrDefault(x => x.Name.Contains(projectPath)); @@ -535,6 +963,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { return; } + var moduleFile = ConvertProjectFileToModuleFile(context, projectFile); ReplacePackageReferenceWithProjectReference( @@ -561,40 +990,50 @@ public class ChangeThemeStep : ProjectBuildPipelineStep "AbpAspNetCoreMvcUiLeptonXThemeModule", "AbpAspNetCoreMvcUiLeptonThemeModule" ); + + RemoveLinesByStatement( + context, + moduleFile.Name, + "using Volo.Abp.LeptonX.Shared;" + ); } private void AddLeptonThemeManagementReferenceToProjects(ProjectBuildContext context) { - var relatedProjectsNames = new Dictionary(); - relatedProjectsNames.Add("Domain", "MyCompanyName.MyProjectName.Domain.csproj"); - relatedProjectsNames.Add("Domain.Shared", "MyCompanyName.MyProjectName.Domain.Shared.csproj"); - relatedProjectsNames.Add("Application", "MyCompanyName.MyProjectName.Application.csproj"); - relatedProjectsNames.Add("Application.Contracts", "MyCompanyName.MyProjectName.Application.Contracts.csproj"); - relatedProjectsNames.Add("Blazor", "MyCompanyName.MyProjectName.Blazor.csproj"); - relatedProjectsNames.Add("Blazor.Server", "MyCompanyName.MyProjectName.Blazor.Server"); - relatedProjectsNames.Add("HttpApi", "MyCompanyName.MyProjectName.HttpApi.csproj"); - relatedProjectsNames.Add("HttpApi.Client", "MyCompanyName.MyProjectName.HttpApi.Client.csproj"); - relatedProjectsNames.Add("Web.Host", "MyCompanyName.MyProjectName.Web.Host.csproj"); - relatedProjectsNames.Add("Web", "MyCompanyName.MyProjectName.Web.csproj"); - - foreach (var relatedProjectName in relatedProjectsNames) + var projects = new Dictionary { - var reference = $@"..\..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.{relatedProjectName.Key}\Volo.Abp.LeptonTheme.Management.{relatedProjectName.Key}.csproj"; - var projectFile = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(relatedProjectName.Value) && f.Name.Contains(".csproj")); + {"Domain", "MyCompanyName.MyProjectName.Domain.csproj"}, + {"Domain.Shared", "MyCompanyName.MyProjectName.Domain.Shared.csproj"}, + {"Application", "MyCompanyName.MyProjectName.Application.csproj"}, + {"Application.Contracts", "MyCompanyName.MyProjectName.Application.Contracts.csproj"}, + {"Blazor.WebAssembly", "MyCompanyName.MyProjectName.Blazor.csproj"}, + {"Blazor.Server", "MyCompanyName.MyProjectName.Blazor.Server"}, + {"HttpApi", "MyCompanyName.MyProjectName.HttpApi.csproj"}, + {"HttpApi.Client", "MyCompanyName.MyProjectName.HttpApi.Client.csproj"}, + {"Web.Host", "MyCompanyName.MyProjectName.Web.Host.csproj"}, + {"Web", "MyCompanyName.MyProjectName.Web.csproj"} + }; + + foreach (var project in projects) + { + var reference = $@"..\..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.{project.Key}\Volo.Abp.LeptonTheme.Management.{project.Key}.csproj"; + var projectFile = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(project.Value) && f.Name.Contains(".csproj")); if (projectFile is null) { continue; } - relatedProjectsNames[relatedProjectName.Key] = projectFile.Name; + + projects[project.Key] = projectFile.Name; AddProjectReference(projectFile, reference); - AddModuleDependency(ConvertProjectFileToModuleFile(context, projectFile), - $"LeptonThemeManagement{ConvertProjectNameToModuleName(relatedProjectName.Key)}Module"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, projectFile), + $"LeptonThemeManagement{ConvertProjectNameToModuleName(project.Key)}Module", + underManagementFolder: project.Key != "HttpApi"); } } - private void AddModuleDependency(FileEntry moduleFile, string dependency) + private void AddModuleDependency(FileEntry moduleFile, string dependency, bool underManagementFolder = true) { var lines = moduleFile.GetLines(); @@ -602,7 +1041,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { if (lines[i].Contains("namespace MyCompanyName.MyProjectName")) { - lines[i - 1] = lines[i - 1] + "using Volo.Abp.LeptonTheme.Management;" + Environment.NewLine; + lines[i - 1] = lines[i - 1] + "using Volo.Abp.LeptonTheme" + (underManagementFolder ? ".Management" : "").EnsureEndsWith(';') + Environment.NewLine; } if (lines[i].Contains("public class MyProjectName") && lines[i-1].Contains(")]")) @@ -861,12 +1300,12 @@ public class ChangeThemeStep : ProjectBuildPipelineStep return moduleName; } - private static void RenameLeptonXFoldersToLepton(ProjectBuildContext context) + private static void RenameLeptonXFolders(ProjectBuildContext context, string folderName) { var leptonXFiles = context.Files.Where(x => x.Name.Contains("LeptonX") && x.IsDirectory); foreach (var file in leptonXFiles) { - new MoveFolderStep(file.Name, file.Name.Replace("LeptonX", "Lepton")).Execute(context); + new MoveFolderStep(file.Name, file.Name.Replace("LeptonX", folderName)).Execute(context); } } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs index 7562a34385..5c5c682c82 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; -//TODO: Remove this step and move it to the ChangeThemeStep.cs? public class ChangeThemeStyleStep : ProjectBuildPipelineStep { public override void Execute(ProjectBuildContext context) @@ -40,11 +39,11 @@ public class ChangeThemeStyleStep : ProjectBuildPipelineStep foreach(var filePath in filePaths) { - ReplaceThemeStyleName(context, filePath, defaultThemeStyleName, newThemeStyleName); + ChangeThemeStyleName(context, filePath, defaultThemeStyleName, newThemeStyleName); } } - protected void ReplaceThemeStyleName(ProjectBuildContext context, string filePath, string oldThemeStyleName, string newThemeStyleName) + protected void ChangeThemeStyleName(ProjectBuildContext context, string filePath, string oldThemeStyleName, string newThemeStyleName) { var file = context.FindFile(filePath); if (file == null) From 07bcf8af061cd15dc5eab0cff9dbd4c7b4a7ef4f Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Sat, 16 Jul 2022 14:02:26 +0300 Subject: [PATCH 07/14] Update ChangeThemeStep.cs --- .../Building/Steps/ChangeThemeStep.cs | 513 +++++++----------- .../Templates/App/AppTemplateBase.cs | 5 + 2 files changed, 210 insertions(+), 308 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index 70fd841c5f..3d4349c820 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Xml; using Volo.Abp.Cli.ProjectBuilding.Files; +using Volo.Abp.Cli.ProjectBuilding.Templates.App; using Volo.Abp.Cli.Utils; namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; @@ -28,33 +29,36 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } } - //TODO: make it more dynamic to support leptonx to basic theme transition!!! protected void ChangeToBasicTheme(ProjectBuildContext context) { + var defaultThemeName = context.BuildArgs.TemplateName is AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName + ? "LeptonXLite" + : "LeptonX"; + #region MyCompanyName.MyProjectName.Web ReplacePackageReferenceWithProjectReference( context, "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" ); ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - "AbpAspNetCoreMvcUiLeptonXLiteThemeModule", + $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", "AbpAspNetCoreMvcUiBasicThemeModule" ); ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - "LeptonXLiteThemeBundles.Styles.Global", + $"{defaultThemeName}ThemeBundles.Styles.Global", "BasicThemeBundles.Styles.Global" ); @@ -65,25 +69,25 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplacePackageReferenceWithProjectReference( context, "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" ); ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - "AbpAspNetCoreMvcUiLeptonXLiteThemeModule", + $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", "AbpAspNetCoreMvcUiBasicThemeModule" ); ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - "LeptonXLiteThemeBundles.Styles.Global", + $"{defaultThemeName}ThemeBundles.Styles.Global", "BasicThemeBundles.Styles.Global" ); @@ -94,367 +98,92 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplacePackageReferenceWithProjectReference( context, "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", - "Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme", + $"Volo.Abp.AspNetCore.Components.WebAssembly.{defaultThemeName}Theme", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.csproj" ); ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXLiteTheme", + $"Volo.Abp.AspNetCore.Components.WebAssembly.{defaultThemeName}Theme", "Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme", - "AbpAspNetCoreComponentsWebAssemblyLeptonXLiteThemeModule", + $"AbpAspNetCoreComponentsWebAssembly{defaultThemeName}ThemeModule", "AbpAspNetCoreComponentsWebAssemblyBasicThemeModule" ); ChangeNamespace( context, "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Web.LeptonXLiteTheme.Themes.LeptonXLite", + $"Volo.Abp.AspNetCore.Components.Web.{defaultThemeName}Theme.Themes.{defaultThemeName}", "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic" ); #endregion - #region MyCompanyName.MyProjectName.Blazor.Server - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" - ); + #region MyCompanyName.MyProjectName.Blazor.Server && MyCompanyName.MyProjectName.Blazor.Server.Tiered - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme", - "AbpAspNetCoreComponentsServerLeptonXLiteThemeModule", - "AbpAspNetCoreComponentsServerBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - "AbpAspNetCoreMvcUiLeptonXLiteThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", - "LeptonXLiteThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - "BlazorLeptonXLiteThemeBundles.Styles.Global", - "BlazorBasicThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Web.LeptonXLiteTheme.Themes.LeptonXLite", - "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic", - "BlazorLeptonXLiteThemeBundles.Styles.Global", - "BlazorBasicThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", - "BlazorLeptonXLiteThemeBundles.Scripts.Global", - "BlazorBasicThemeBundles.Scripts.Global" - ); + ChangeThemeToBasicForBlazorServerProjects(context, defaultThemeName); #endregion - - //TODO: refactor!!! (same with blazor.server except paths) - #region MyCompanyName.MyProjectName.Blazor.Server.Tiered - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" - ); - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme", - "AbpAspNetCoreComponentsServerLeptonXLiteThemeModule", - "AbpAspNetCoreComponentsServerBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - "AbpAspNetCoreMvcUiLeptonXLiteThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", - "LeptonXLiteThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - "BlazorLeptonXLiteThemeBundles.Styles.Global", - "BlazorBasicThemeBundles.Styles.Global" - ); - - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Web.LeptonXLiteTheme.Themes.LeptonXLite", - "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic", - "BlazorLeptonXLiteThemeBundles.Styles.Global", - "BlazorBasicThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", - "BlazorLeptonXLiteThemeBundles.Scripts.Global", - "BlazorBasicThemeBundles.Scripts.Global" - ); - - #endregion - #region MyCompanyName.MyProjectName.AuthServer ReplacePackageReferenceWithProjectReference( context, "/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" ); ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - "AbpAspNetCoreMvcUiLeptonXLiteThemeModule", + $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", "AbpAspNetCoreMvcUiBasicThemeModule" ); ChangeNamespaceAndKeyword( context, "/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - "LeptonXLiteThemeBundles.Styles.Global", + $"{defaultThemeName}ThemeBundles.Styles.Global", "BasicThemeBundles.Styles.Global" ); #endregion - #region MyCompanyName.MyProjectName.Web.Mvc - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyProjectNameWebModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - "AbpAspNetCoreMvcUiLeptonXLiteThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); + #region MyCompanyName.MyProjectName.Web.Mvc && MyCompanyName.MyProjectName.Web.Mvc.Mongo - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyProjectNameWebModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - "LeptonXLiteThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" - ); + ChangeThemeToBasicForMvcProjects(context, defaultThemeName); //TODO: rename? #endregion - - #region MyCompanyName.MyProjectName.Web.Mvc.Mongo - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc.Mongo/MyCompanyName.MyProjectName.Web.Mvc.Mongo.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - @"..\..\..\..\..\modules\basic-theme\\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc.Mongo/MyProjectNameWebModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - "AbpAspNetCoreMvcUiLeptonXLiteThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); + #region MyCompanyName.MyProjectName.Blazor.Server && MyCompanyName.MyProjectName.Blazor.Server.Mongo - (app-nolayers) - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc.Mongo/MyProjectNameWebModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - "LeptonXLiteThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" - ); - - #endregion - - #region MyCompanyName.MyProjectName.Blazor.Server - (app-nolayers) - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme", - "AbpAspNetCoreComponentsServerLeptonXLiteThemeModule", - "AbpAspNetCoreComponentsServerBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - "AbpAspNetCoreMvcUiLeptonXLiteThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", - "LeptonXLiteThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - "BlazorLeptonXLiteThemeBundles.Styles.Global", - "BlazorBasicThemeBundles.Styles.Global" - ); - - #endregion - - #region MyCompanyName.MyProjectName.Blazor.Server.Mongo - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" - ); - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme", - "AbpAspNetCoreComponentsServerLeptonXLiteThemeModule", - "AbpAspNetCoreComponentsServerBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - "AbpAspNetCoreMvcUiLeptonXLiteThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXLiteTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", - "LeptonXLiteThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - "BlazorLeptonXLiteThemeBundles.Styles.Global", - "BlazorBasicThemeBundles.Styles.Global" - ); + ChangeThemeToBasicForNoLayersBlazorServerProjects(context, defaultThemeName); #endregion #region Angular + var angularPackageName = context.BuildArgs.TemplateName is AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName + ? "@abp/ng.theme.lepton-x" + : "@volosoft/abp.ng.theme.lepton-x"; + ReplaceImportPackage( context, "/angular/src/app/app.module.ts", - "@abp/ng.theme.lepton-x", + angularPackageName, "@abp/ng.theme.basic" ); RemoveLinesByStatement( context, "/angular/src/app/app.module.ts", - "SideMenuLayoutModule" + "SideMenuLayoutModule" ); ReplaceMethodNames( @@ -472,7 +201,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #endregion } - + protected void ChangeToLeptonTheme(ProjectBuildContext context) { #region Common @@ -1308,4 +1037,172 @@ public class ChangeThemeStep : ProjectBuildPipelineStep new MoveFolderStep(file.Name, file.Name.Replace("LeptonX", folderName)).Execute(context); } } + + + private void ChangeThemeToBasicForBlazorServerProjects(ProjectBuildContext context, string defaultThemeName) + { + var projectNames = new[] {"Blazor", "Blazor.Server.Tiered"}; + + foreach (var projectName in projectNames) + { + ReplacePackageReferenceWithProjectReference( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", + @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" + ); + + ReplacePackageReferenceWithProjectReference( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", + @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", + "Volo.Abp.AspNetCore.Components.Server.BasicTheme", + $"AbpAspNetCoreComponentsServer{defaultThemeName}ThemeModule", + "AbpAspNetCoreComponentsServerBasicThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", + $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", + "AbpAspNetCoreMvcUiBasicThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", + $"{defaultThemeName}ThemeBundles.Styles.Global", + "BasicThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", + $"Blazor{defaultThemeName}ThemeBundles.Styles.Global", + "BlazorBasicThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + $"Volo.Abp.AspNetCore.Components.Web.{defaultThemeName}Theme.Themes.{defaultThemeName}", + "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic", + $"Blazor{defaultThemeName}ThemeBundles.Styles.Global", + "BlazorBasicThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", + $"Blazor{defaultThemeName}ThemeBundles.Scripts.Global", + "BlazorBasicThemeBundles.Scripts.Global" + ); + } + } + + private void ChangeThemeToBasicForMvcProjects(ProjectBuildContext context, string defaultThemeName) + { + var projectNames = new[] {"Web.Mvc", "Web.Mvc.Mongo"}; + + foreach (var projectName in projectNames) + { + ReplacePackageReferenceWithProjectReference( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName{projectName}.csproj", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", + @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameWebModule.cs", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", + $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", + "AbpAspNetCoreMvcUiBasicThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameWebModule.cs", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", + $"{defaultThemeName}ThemeBundles.Styles.Global", + "BasicThemeBundles.Styles.Global" + ); + } + } + + private void ChangeThemeToBasicForNoLayersBlazorServerProjects(ProjectBuildContext context, string defaultThemeName) + { + var projectNames = new[] {"Blazor.Server", "Blazor.Server.Mongo"}; + + foreach (var projectName in projectNames) + { + ReplacePackageReferenceWithProjectReference( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", + @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" + ); + + ReplacePackageReferenceWithProjectReference( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", + @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", + $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", + "Volo.Abp.AspNetCore.Components.Server.BasicTheme", + $"AbpAspNetCoreComponentsServer{defaultThemeName}ThemeModule", + "AbpAspNetCoreComponentsServerBasicThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", + $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", + "AbpAspNetCoreMvcUiBasicThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", + $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", + $"{defaultThemeName}ThemeBundles.Styles.Global", + "BasicThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", + $"Blazor{defaultThemeName}ThemeBundles.Styles.Global", + "BlazorBasicThemeBundles.Styles.Global" + ); + } + } } \ No newline at end of file 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 e3d70c999f..dd05c7e567 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 @@ -186,6 +186,11 @@ public abstract class AppTemplateBase : TemplateInfo return; } + if (context.BuildArgs.Theme == Theme.LeptonX) + { + context.Symbols.Add("LEPTONX"); + } + steps.Add(new ChangeThemeStep()); steps.Add(new ChangeThemeStyleStep()); RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, isProTemplate: IsPro()); From bd003f190f922416b125a379a8b91c77508f0cec Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Sat, 16 Jul 2022 17:43:08 +0300 Subject: [PATCH 08/14] Update ChangeThemeStep.cs --- .../Building/Steps/ChangeThemeStep.cs | 819 +++++------------- 1 file changed, 233 insertions(+), 586 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index 3d4349c820..377948bf68 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -35,64 +35,12 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ? "LeptonXLite" : "LeptonX"; - #region MyCompanyName.MyProjectName.Web + #region MVC Projects - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyCompanyName.MyProjectName.Web.csproj", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - $"{defaultThemeName}ThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" - ); + ChangeThemeToBasicForMvcProjects(context, defaultThemeName); #endregion - - #region MyCompanyName.MyProjectName.HttpApi.Host - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - $"{defaultThemeName}ThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" - ); - - #endregion - #region MyCompanyName.MyProjectName.Blazor ReplacePackageReferenceWithProjectReference( @@ -120,53 +68,12 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #endregion - #region MyCompanyName.MyProjectName.Blazor.Server && MyCompanyName.MyProjectName.Blazor.Server.Tiered + #region Blazor.Server Projects ChangeThemeToBasicForBlazorServerProjects(context, defaultThemeName); #endregion - #region MyCompanyName.MyProjectName.AuthServer - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - $"{defaultThemeName}ThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" - ); - - #endregion - - #region MyCompanyName.MyProjectName.Web.Mvc && MyCompanyName.MyProjectName.Web.Mvc.Mongo - - ChangeThemeToBasicForMvcProjects(context, defaultThemeName); //TODO: rename? - - #endregion - - #region MyCompanyName.MyProjectName.Blazor.Server && MyCompanyName.MyProjectName.Blazor.Server.Mongo - (app-nolayers) - - ChangeThemeToBasicForNoLayersBlazorServerProjects(context, defaultThemeName); - - #endregion - #region Angular var angularPackageName = context.BuildArgs.TemplateName is AppTemplate.TemplateName or AppNoLayersTemplate.TemplateName @@ -211,15 +118,9 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #endregion - #region MyCompanyName.MyProjectName.Web + #region MVC Projects - ChangeThemeToLeptonForMvc(context, "Web"); - - #endregion - - #region MyCompanyName.MyProjectName.HttpApi.Host - - ChangeThemeToLeptonForMvc(context, "HttpApi.Host"); + ChangeThemeToLeptonForMvcProjects(context); #endregion @@ -243,155 +144,10 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #endregion - #region MyCompanyName.MyProjectName.Blazor.Server - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" - ); - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", - @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", - "AbpAspNetCoreComponentsServerLeptonXThemeModule", - "AbpAspNetCoreComponentsServerLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", - "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "BlazorLeptonXThemeBundles.Scripts.Global", - "BlazorLeptonThemeBundles.Scripts.Global" - ); - - #endregion - - //TODO: refactor!!! (same with blazor.server except paths) - #region MyCompanyName.MyProjectName.Blazor.Server.Tiered - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" - ); - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyCompanyName.MyProjectName.Blazor.Server.Tiered.csproj", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", - @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", - "AbpAspNetCoreComponentsServerLeptonXThemeModule", - "AbpAspNetCoreComponentsServerLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", - "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "BlazorLeptonXThemeBundles.Scripts.Global", - "BlazorLeptonThemeBundles.Scripts.Global" - ); + #region MyCompanyName.MyProjectName.Blazor.Server && MyCompanyName.MyProjectName.Blazor.Server.Tiered - #endregion - - #region MyCompanyName.MyProjectName.AuthServer + ChangeThemeToLeptonForBlazorServerProjects(context); - ChangeThemeToLeptonForMvc(context, "AuthServer"); - #endregion #region Angular @@ -424,307 +180,88 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #endregion - //TODO: refactor!!! // Single-Layers - - #region MyCompanyName.MyProjectName.Web.Mvc - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" - ); - - var file = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(@"/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.csproj") && f.Name.Contains(".csproj")); - if (file != null) - { - AddProjectReference(file, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Web\Volo.Abp.LeptonTheme.Management.Web.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Web")}Module"); - - AddProjectReference(file, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.HttpApi\Volo.Abp.LeptonTheme.Management.HttpApi.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file), $"LeptonThemeManagement{ConvertProjectNameToModuleName("HttpApi")}Module", underManagementFolder: false); + #region MyCompanyName.MyProjectName.Web.Mvc && MyCompanyName.MyProjectName.Web.Mvc.Mongo + + var projectNames = new[] {"Web", "HttpApi", "Application"}; + ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.csproj", projectNames); + ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.Mongo.csproj", projectNames); - AddProjectReference(file, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Application\Volo.Abp.LeptonTheme.Management.Application.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Application")}Module"); - } - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyProjectNameWebModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyProjectNameWebModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" - ); - #endregion - - #region MyCompanyName.MyProjectName.Web.Mvc.Mongo - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc.Mongo/MyCompanyName.MyProjectName.Web.Mvc.Mongo.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" - ); - - var file2 = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(@"/aspnet-core/src/MMyCompanyName.MyProjectName.Web.Mvc.Mongo/MyCompanyName.MyProjectName.Web.Mvc.Mongo.csproj") && f.Name.Contains(".csproj")); - if (file2 != null) - { - AddProjectReference(file2, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Web\Volo.Abp.LeptonTheme.Management.Web.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file2), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Web")}Module"); - - AddProjectReference(file2, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.HttpApi\Volo.Abp.LeptonTheme.Management.HttpApi.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file2), $"LeptonThemeManagement{ConvertProjectNameToModuleName("HttpApi")}Module", underManagementFolder: false); + #region MyCompanyName.MyProjectName.Blazor.Server && MyCompanyName.MyProjectName.Blazor.Server.Mongo - (app-nolayers) - AddProjectReference(file2, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Application\Volo.Abp.LeptonTheme.Management.Application.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file2), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Application")}Module"); - } - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc.Mongo/MyProjectNameWebModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc.Mongo/MyProjectNameWebModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" - ); + ChangeThemeToLeptonForNoLayersBlazorServerProjects(context); #endregion - #region MyCompanyName.MyProjectName.Blazor.Server - (app-nolayers) - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" - ); - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", - @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" - ); - - var file3 = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(@"/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyCompanyName.MyProjectName.Blazor.Server.csproj") && f.Name.Contains(".csproj")); - if (file3 != null) - { - AddProjectReference(file3, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Blazor.Server\Volo.Abp.LeptonTheme.Management.Blazor.Server.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file3), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Blazor.Server")}Module"); - - AddProjectReference(file3, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.HttpApi\Volo.Abp.LeptonTheme.Management.HttpApi.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file3), $"LeptonThemeManagement{ConvertProjectNameToModuleName("HttpApi")}Module", underManagementFolder: false); + // Microservices + //TODO: add for microservices!!! + } - AddProjectReference(file3, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Application\Volo.Abp.LeptonTheme.Management.Application.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file3), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Application")}Module"); + private void ConfigureLeptonManagementPackagesForNoLayersMvc(ProjectBuildContext context, string targetProjectPath, string[] projectNames) + { + var file = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(targetProjectPath) && f.Name.Contains(".csproj")); + if (file == null) + { + return; } - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", - "AbpAspNetCoreComponentsServerLeptonXThemeModule", - "AbpAspNetCoreComponentsServerLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", - "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "BlazorLeptonXThemeBundles.Scripts.Global", - "BlazorLeptonThemeBundles.Scripts.Global" - ); - - #endregion - - #region MyCompanyName.MyProjectName.Blazor.Server.Mongo - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" - ); - - ReplacePackageReferenceWithProjectReference( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", - @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" - ); - - var file4 = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(@"/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyCompanyName.MyProjectName.Blazor.Server.Mongo.csproj") && f.Name.Contains(".csproj")); - if (file4 != null) + foreach (var projectName in projectNames) { - AddProjectReference(file4, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Blazor.Server\Volo.Abp.LeptonTheme.Management.Blazor.Server.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file4), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Blazor.Server")}Module"); - - AddProjectReference(file4, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.HttpApi\Volo.Abp.LeptonTheme.Management.HttpApi.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file4), $"LeptonThemeManagement{ConvertProjectNameToModuleName("HttpApi")}Module", underManagementFolder: false); - - AddProjectReference(file4, @"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.Application\Volo.Abp.LeptonTheme.Management.Application.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file4), $"LeptonThemeManagement{ConvertProjectNameToModuleName("Application")}Module"); + AddProjectReference(file, $@"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.{projectName}\Volo.Abp.LeptonTheme.Management.{projectName}.csproj"); + AddModuleDependency(ConvertProjectFileToModuleFile(context, file), $"LeptonThemeManagement{ConvertProjectNameToModuleName($"{projectName}")}Module"); } - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", - "AbpAspNetCoreComponentsServerLeptonXThemeModule", - "AbpAspNetCoreComponentsServerLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", - "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", - "BlazorLeptonXThemeBundles.Styles.Global", - "BlazorLeptonThemeBundles.Styles.Global" - ); - - ChangeNamespaceAndKeyword( - context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Mongo/Pages/_Host.cshtml", - "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", - "BlazorLeptonXThemeBundles.Scripts.Global", - "BlazorLeptonThemeBundles.Scripts.Global" - ); - - #endregion - - // Microservices } - private void ChangeThemeToLeptonForMvc(ProjectBuildContext context, string projectName) + private void ChangeThemeToLeptonForMvcProjects(ProjectBuildContext context) { - var projectPath = $"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj"; - var projectFile = context.Files.FirstOrDefault(x => x.Name.Contains(projectPath)); - if (projectFile is null) + var projectNames = new[] { + "Web", "HttpApi.Host", "AuthServer", //app + "Web.Mvc", "Web.Mvc.Mongo" //app-nolayers + }; + foreach (var projectName in projectNames) { - return; - } + var projectPath = $"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj"; + var projectFile = context.Files.FirstOrDefault(x => x.Name.Contains(projectPath)); + if (projectFile == null) + { + return; + } - var moduleFile = ConvertProjectFileToModuleFile(context, projectFile); + var moduleFile = ConvertProjectFileToModuleFile(context, projectFile); - ReplacePackageReferenceWithProjectReference( - context, - projectFile.Name, - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" - ); + ReplacePackageReferenceWithProjectReference( + context, + projectFile.Name, + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" + ); - ChangeNamespaceAndKeyword( - context, - moduleFile.Name, - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", - "LeptonXThemeBundles.Styles.Global", - "LeptonThemeBundles.Styles.Global" - ); + ChangeNamespaceAndKeyword( + context, + moduleFile.Name, + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", + "LeptonXThemeBundles.Styles.Global", + "LeptonThemeBundles.Styles.Global" + ); - ChangeNamespaceAndKeyword( - context, - moduleFile.Name, - "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", - "AbpAspNetCoreMvcUiLeptonXThemeModule", - "AbpAspNetCoreMvcUiLeptonThemeModule" - ); + ChangeNamespaceAndKeyword( + context, + moduleFile.Name, + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", + "AbpAspNetCoreMvcUiLeptonXThemeModule", + "AbpAspNetCoreMvcUiLeptonThemeModule" + ); - RemoveLinesByStatement( - context, - moduleFile.Name, - "using Volo.Abp.LeptonX.Shared;" - ); + RemoveLinesByStatement( + context, + moduleFile.Name, + "Volo.Abp.LeptonX.Shared;" + ); + } } private void AddLeptonThemeManagementReferenceToProjects(ProjectBuildContext context) @@ -1037,31 +574,76 @@ public class ChangeThemeStep : ProjectBuildPipelineStep new MoveFolderStep(file.Name, file.Name.Replace("LeptonX", folderName)).Execute(context); } } - + + private void ChangeThemeToBasicForMvcProjects(ProjectBuildContext context, string defaultThemeName) + { + var projects = new Dictionary + { + {"Web", "MyProjectNameWebModule"}, + {"HttpApi.Host", "MyProjectNameHttpApiHostModule"}, + {"AuthServer", "MyProjectNameAuthServerModule"}, + {"Web.Mvc", "MyProjectNameWebModule"}, + {"Web.Mvc.Mongo", "MyProjectNameWebModule"}, + }; + + foreach (var project in projects) + { + ReplacePackageReferenceWithProjectReference( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", + @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", + $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", + "AbpAspNetCoreMvcUiBasicThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", + $"{defaultThemeName}ThemeBundles.Styles.Global", + "BasicThemeBundles.Styles.Global" + ); + } + } private void ChangeThemeToBasicForBlazorServerProjects(ProjectBuildContext context, string defaultThemeName) { - var projectNames = new[] {"Blazor", "Blazor.Server.Tiered"}; + var projects = new Dictionary + { + {"Blazor", "MyProjectNameBlazorModule"}, + {"Blazor.Server.Tiered", "MyProjectNameBlazorModule"}, + {"Blazor.Server", "MyProjectNameModule"}, + {"Blazor.Server.Mongo", "MyProjectNameModule"} + }; - foreach (var projectName in projectNames) + foreach (var project in projects) { ReplacePackageReferenceWithProjectReference( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" ); ReplacePackageReferenceWithProjectReference( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" ); ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", "Volo.Abp.AspNetCore.Components.Server.BasicTheme", $"AbpAspNetCoreComponentsServer{defaultThemeName}ThemeModule", @@ -1070,7 +652,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", @@ -1079,7 +661,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme.Bundling", "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", $"{defaultThemeName}ThemeBundles.Styles.Global", @@ -1088,7 +670,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", $"Blazor{defaultThemeName}ThemeBundles.Styles.Global", @@ -1097,7 +679,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", $"Volo.Abp.AspNetCore.Components.Web.{defaultThemeName}Theme.Themes.{defaultThemeName}", "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic", $"Blazor{defaultThemeName}ThemeBundles.Styles.Global", @@ -1106,7 +688,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme.Bundling", "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", $"Blazor{defaultThemeName}ThemeBundles.Scripts.Global", @@ -1115,93 +697,158 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } } - private void ChangeThemeToBasicForMvcProjects(ProjectBuildContext context, string defaultThemeName) + private void ChangeThemeToLeptonForBlazorServerProjects(ProjectBuildContext context) { - var projectNames = new[] {"Web.Mvc", "Web.Mvc.Mongo"}; - + var projectNames = new[] {"Blazor", "Blazor.Server.Tiered"}; foreach (var projectName in projectNames) { ReplacePackageReferenceWithProjectReference( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName{projectName}.csproj", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" ); - + + ReplacePackageReferenceWithProjectReference( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" + ); + ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameWebModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", + "AbpAspNetCoreComponentsServerLeptonXThemeModule", + "AbpAspNetCoreComponentsServerLeptonThemeModule" ); ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameWebModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - $"{defaultThemeName}ThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", + "AbpAspNetCoreMvcUiLeptonXThemeModule", + "AbpAspNetCoreMvcUiLeptonThemeModule" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "LeptonXThemeBundles.Styles.Global", + "LeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", + "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "BlazorLeptonXThemeBundles.Scripts.Global", + "BlazorLeptonThemeBundles.Scripts.Global" ); } } - private void ChangeThemeToBasicForNoLayersBlazorServerProjects(ProjectBuildContext context, string defaultThemeName) + private void ChangeThemeToLeptonForNoLayersBlazorServerProjects(ProjectBuildContext context) { - var projectNames = new[] {"Blazor.Server", "Blazor.Server.Mongo"}; - + var blazorServerProjects = new[] { "Blazor.Server", "HttpApi", "Application" }; + + var projectNames = new[] { "Blazor.Server", "Blazor.Server.Mongo" }; foreach (var projectName in projectNames) { ReplacePackageReferenceWithProjectReference( context, $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", - $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" ); - + ReplacePackageReferenceWithProjectReference( context, $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" ); - + + ConfigureLeptonManagementPackagesForNoLayersMvc(context, + $@"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + blazorServerProjects); + ChangeNamespaceAndKeyword( context, $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", - $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme", - $"AbpAspNetCoreComponentsServer{defaultThemeName}ThemeModule", - "AbpAspNetCoreComponentsServerBasicThemeModule" + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", + "AbpAspNetCoreComponentsServerLeptonXThemeModule", + "AbpAspNetCoreComponentsServerLeptonThemeModule" ); - + ChangeNamespaceAndKeyword( context, $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", - $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", - "AbpAspNetCoreMvcUiBasicThemeModule" + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", + "AbpAspNetCoreMvcUiLeptonXThemeModule", + "AbpAspNetCoreMvcUiLeptonThemeModule" ); - + ChangeNamespaceAndKeyword( context, $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", - $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme.Bundling", - "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", - $"{defaultThemeName}ThemeBundles.Styles.Global", - "BasicThemeBundles.Styles.Global" + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "LeptonXThemeBundles.Styles.Global", + "LeptonThemeBundles.Styles.Global" ); - + ChangeNamespaceAndKeyword( context, $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", - $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", - "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", - $"Blazor{defaultThemeName}ThemeBundles.Styles.Global", - "BlazorBasicThemeBundles.Styles.Global" + "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", + "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", + "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", + "BlazorLeptonXThemeBundles.Styles.Global", + "BlazorLeptonThemeBundles.Styles.Global" + ); + + ChangeNamespaceAndKeyword( + context, + $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", + "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", + "BlazorLeptonXThemeBundles.Scripts.Global", + "BlazorLeptonThemeBundles.Scripts.Global" ); } } From fe61bc5096f2551f8b17e7c224cd5bf9a76ea795 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Sun, 17 Jul 2022 12:15:41 +0300 Subject: [PATCH 09/14] CLI: Refactor ChangeThemeStep.cs --- .../Building/Steps/ChangeThemeStep.cs | 122 +++++++++--------- .../Building/Steps/ChangeThemeStyleStep.cs | 25 ++-- .../Templates/App/AppTemplateBase.cs | 21 +-- .../Microservice/MicroserviceTemplateBase.cs | 59 +++++++++ 4 files changed, 148 insertions(+), 79 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index 377948bf68..4f27e857ec 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -8,7 +8,6 @@ using Volo.Abp.Cli.Utils; namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; -//TODO: refactor!!! public class ChangeThemeStep : ProjectBuildPipelineStep { public override void Execute(ProjectBuildContext context) @@ -45,14 +44,14 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplacePackageReferenceWithProjectReference( context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", + "/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", $"Volo.Abp.AspNetCore.Components.WebAssembly.{defaultThemeName}Theme", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme\Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.csproj" ); ChangeNamespaceAndKeyword( context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", $"Volo.Abp.AspNetCore.Components.WebAssembly.{defaultThemeName}Theme", "Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme", $"AbpAspNetCoreComponentsWebAssembly{defaultThemeName}ThemeModule", @@ -61,7 +60,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespace( context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", $"Volo.Abp.AspNetCore.Components.Web.{defaultThemeName}Theme.Themes.{defaultThemeName}", "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic" ); @@ -128,14 +127,14 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ReplacePackageReferenceWithProjectReference( context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", + "/MyCompanyName.MyProjectName.Blazor/MyCompanyName.MyProjectName.Blazor.csproj", "Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXTheme", @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme\Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme.csproj" ); ChangeNamespaceAndKeyword( context, - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", "AbpAspNetCoreComponentsWebAssemblyLeptonXThemeModule", @@ -180,12 +179,11 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #endregion - // Single-Layers #region MyCompanyName.MyProjectName.Web.Mvc && MyCompanyName.MyProjectName.Web.Mvc.Mongo var projectNames = new[] {"Web", "HttpApi", "Application"}; - ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.csproj", projectNames); - ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/aspnet-core/src/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.Mongo.csproj", projectNames); + ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.csproj", projectNames); + ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.Mongo.csproj", projectNames); #endregion @@ -194,9 +192,6 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeThemeToLeptonForNoLayersBlazorServerProjects(context); #endregion - - // Microservices - //TODO: add for microservices!!! } private void ConfigureLeptonManagementPackagesForNoLayersMvc(ProjectBuildContext context, string targetProjectPath, string[] projectNames) @@ -216,17 +211,18 @@ public class ChangeThemeStep : ProjectBuildPipelineStep private void ChangeThemeToLeptonForMvcProjects(ProjectBuildContext context) { - var projectNames = new[] { - "Web", "HttpApi.Host", "AuthServer", //app - "Web.Mvc", "Web.Mvc.Mongo" //app-nolayers + var projectNames = new[] + { + "Web", "HttpApi.Host", "AuthServer", "Web.Mvc", "Web.Mvc.Mongo" }; + foreach (var projectName in projectNames) { var projectPath = $"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj"; var projectFile = context.Files.FirstOrDefault(x => x.Name.Contains(projectPath)); if (projectFile == null) { - return; + continue; } var moduleFile = ConvertProjectFileToModuleFile(context, projectFile); @@ -269,15 +265,22 @@ public class ChangeThemeStep : ProjectBuildPipelineStep var projects = new Dictionary { {"Domain", "MyCompanyName.MyProjectName.Domain.csproj"}, + {"Domain", "MyCompanyName.MyProjectName.AdministrationService.Domain.csproj"}, {"Domain.Shared", "MyCompanyName.MyProjectName.Domain.Shared.csproj"}, + {"Domain.Shared", "MyCompanyName.MyProjectName.AdministrationService.Domain.Shared.csproj"}, {"Application", "MyCompanyName.MyProjectName.Application.csproj"}, + {"Application", "MyCompanyName.MyProjectName.AdministrationService.Application.csproj"}, {"Application.Contracts", "MyCompanyName.MyProjectName.Application.Contracts.csproj"}, + {"Application.Contracts", "MyCompanyName.MyProjectName.AdministrationService.Application.Contracts.csproj"}, {"Blazor.WebAssembly", "MyCompanyName.MyProjectName.Blazor.csproj"}, - {"Blazor.Server", "MyCompanyName.MyProjectName.Blazor.Server"}, + {"Blazor.Server", "MyCompanyName.MyProjectName.Blazor.Server.csproj"}, {"HttpApi", "MyCompanyName.MyProjectName.HttpApi.csproj"}, + {"HttpApi", "MyCompanyName.MyProjectName.AdministrationService.HttpApi.csproj"}, {"HttpApi.Client", "MyCompanyName.MyProjectName.HttpApi.Client.csproj"}, + {"HttpApi.Client", "MyCompanyName.MyProjectName.AdministrationService.HttpApi.Client.csproj"}, {"Web.Host", "MyCompanyName.MyProjectName.Web.Host.csproj"}, - {"Web", "MyCompanyName.MyProjectName.Web.csproj"} + {"Web", "MyCompanyName.MyProjectName.Web.csproj"}, + {"Web", "MyCompanyName.MyProjectName.AdministrationService.Web.csproj"} }; foreach (var project in projects) @@ -325,7 +328,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep string packageReference, string projectReference) { - var file = context.FindFile(targetProjectFilePath); + var file = context.Files.FirstOrDefault(x => x.Name.Contains(targetProjectFilePath)); if (file == null) { return; @@ -352,8 +355,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep string oldKeyword, string newKeyword) { - var file = context.FindFile(targetModuleFilePath); - + var file = context.Files.FirstOrDefault(x => x.Name.Contains(targetModuleFilePath)); if (file == null) { return; @@ -367,7 +369,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { if (lines[i].Contains($"using {oldNamespace}")) { - lines[i] = $"using {newNamespace};"; + lines[i] = lines[i].Replace($"using {oldNamespace}", $"using {newNamespace}"); } else if (lines[i].Contains(oldKeyword)) { @@ -384,8 +386,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep string oldNamespace, string newNamespace) { - var file = context.FindFile(targetModuleFilePath); - + var file = context.Files.FirstOrDefault(x => x.Name.Contains(targetModuleFilePath)); if (file == null) { return; @@ -396,9 +397,9 @@ public class ChangeThemeStep : ProjectBuildPipelineStep var lines = file.GetLines(); for (var i = 0; i < lines.Length; i++) { - if (lines[i].Contains($"using {oldNamespace};")) + if (lines[i].Contains($"using {oldNamespace}")) { - lines[i] = $"using {newNamespace};"; + lines[i] = lines[i].Replace($"using {oldNamespace}", $"using {newNamespace}"); } } @@ -411,8 +412,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep string oldImportPackage, string newImportPackage) { - var file = context.FindFile(filePath); - + var file = context.Files.FirstOrDefault(x => x.Name.Contains(filePath)); if (file == null) { return; @@ -435,8 +435,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep string filePath, string statement) { - var file = context.FindFile(filePath); - + var file = context.Files.FirstOrDefault(x => x.Name.Contains(filePath)); if (file == null) { return; @@ -462,8 +461,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep string oldMethodName, string newMethodName) { - var file = context.FindFile(filePath); - + var file = context.Files.FirstOrDefault(x => x.Name.Contains(filePath)); if (file == null) { return; @@ -561,9 +559,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep private static string ConvertProjectNameToModuleName(string moduleName) { - moduleName = moduleName.Replace(".", ""); - - return moduleName; + return moduleName.Replace(".", ""); } private static void RenameLeptonXFolders(ProjectBuildContext context, string folderName) @@ -590,14 +586,14 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { ReplacePackageReferenceWithProjectReference( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", + $"/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" ); ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", @@ -606,7 +602,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", $"{defaultThemeName}ThemeBundles.Styles.Global", @@ -629,21 +625,21 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { ReplacePackageReferenceWithProjectReference( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", + $"/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" ); ReplacePackageReferenceWithProjectReference( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", + $"/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Components.Server.BasicTheme\Volo.Abp.AspNetCore.Components.Server.BasicTheme.csproj" ); ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme", "Volo.Abp.AspNetCore.Components.Server.BasicTheme", $"AbpAspNetCoreComponentsServer{defaultThemeName}ThemeModule", @@ -652,7 +648,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", @@ -661,7 +657,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme.Bundling", "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", $"{defaultThemeName}ThemeBundles.Styles.Global", @@ -670,7 +666,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", $"Blazor{defaultThemeName}ThemeBundles.Styles.Global", @@ -679,7 +675,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", + $"/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", $"Volo.Abp.AspNetCore.Components.Web.{defaultThemeName}Theme.Themes.{defaultThemeName}", "Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic", $"Blazor{defaultThemeName}ThemeBundles.Styles.Global", @@ -688,7 +684,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", + $"/MyCompanyName.MyProjectName.{project.Key}/Pages/_Host.cshtml", $"Volo.Abp.AspNetCore.Components.Server.{defaultThemeName}Theme.Bundling", "Volo.Abp.AspNetCore.Components.Server.BasicTheme.Bundling", $"Blazor{defaultThemeName}ThemeBundles.Scripts.Global", @@ -704,21 +700,21 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { ReplacePackageReferenceWithProjectReference( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" ); ReplacePackageReferenceWithProjectReference( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", @"..\..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" ); ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", "AbpAspNetCoreComponentsServerLeptonXThemeModule", @@ -727,7 +723,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", "AbpAspNetCoreMvcUiLeptonXThemeModule", @@ -736,7 +732,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", "LeptonXThemeBundles.Styles.Global", @@ -745,7 +741,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", + $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs", "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", "BlazorLeptonXThemeBundles.Styles.Global", @@ -754,7 +750,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", "BlazorLeptonXThemeBundles.Styles.Global", @@ -763,7 +759,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", "BlazorLeptonXThemeBundles.Scripts.Global", @@ -781,25 +777,25 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { ReplacePackageReferenceWithProjectReference( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton\Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.csproj" ); ReplacePackageReferenceWithProjectReference( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", @"..\..\..\..\lepton-theme\src\Volo.Abp.AspNetCore.Components.Server.LeptonTheme\Volo.Abp.AspNetCore.Components.Server.LeptonTheme.csproj" ); ConfigureLeptonManagementPackagesForNoLayersMvc(context, - $@"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", + $@"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj", blazorServerProjects); ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", + $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme", "Volo.Abp.AspNetCore.Components.Server.LeptonTheme", "AbpAspNetCoreComponentsServerLeptonXThemeModule", @@ -808,7 +804,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", + $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton", "AbpAspNetCoreMvcUiLeptonXThemeModule", @@ -817,7 +813,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", + $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", "LeptonXThemeBundles.Styles.Global", @@ -826,7 +822,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", + $"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameModule.cs", "Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Bundling", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton.Bundling", "BlazorLeptonXThemeBundles.Styles.Global", @@ -835,7 +831,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", "Volo.Abp.AspNetCore.Components.Web.LeptonXTheme.Components", "Volo.Abp.AspNetCore.Components.Web.LeptonTheme.Components", "BlazorLeptonXThemeBundles.Styles.Global", @@ -844,7 +840,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/aspnet-core/src/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", + $"/MyCompanyName.MyProjectName.{projectName}/Pages/_Host.cshtml", "Volo.Abp.AspNetCore.Components.Server.LeptonXTheme.Bundling", "Volo.Abp.AspNetCore.Components.Server.LeptonTheme.Bundling", "BlazorLeptonXThemeBundles.Scripts.Global", diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs index 5c5c682c82..ef6a1e9474 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStyleStep.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps; @@ -6,7 +7,7 @@ public class ChangeThemeStyleStep : ProjectBuildPipelineStep { public override void Execute(ProjectBuildContext context) { - if (!context.BuildArgs.Theme.HasValue || context.BuildArgs.Theme != Theme.LeptonX) + if (context.BuildArgs.Theme != Theme.LeptonX) { return; } @@ -29,12 +30,20 @@ public class ChangeThemeStyleStep : ProjectBuildPipelineStep var filePaths = new List { - "/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs", - "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs", - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", - "/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs" + "/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs", + "/MyCompanyName.MyProjectName.Web.Host/MyProjectNameWebModule.cs", + "/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs", + "/MyCompanyName.MyProjectName.HttpApi.HostWithIds/MyProjectNameHttpApiHostModule.cs", + "/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs", + "/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameBlazorModule.cs", + "/MyCompanyName.MyProjectName.Blazor.Server/MyProjectNameModule.cs", + "/MyCompanyName.MyProjectName.Blazor.Server.Mongo/MyProjectNameModule.cs", + "/MyCompanyName.MyProjectName.Host/MyProjectNameModule.cs", + "/MyCompanyName.MyProjectName.Host.Mongo/MyProjectNameModule.cs", + "/MyCompanyName.MyProjectName.Mvc/MyProjectNameModule.cs", + "/MyCompanyName.MyProjectName.Mvc.Mongo/MyProjectNameModule.cs", + "/MyCompanyName.MyProjectName.Blazor.Server.Tiered/MyProjectNameBlazorModule.cs", + "/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs", }; foreach(var filePath in filePaths) @@ -45,7 +54,7 @@ public class ChangeThemeStyleStep : ProjectBuildPipelineStep protected void ChangeThemeStyleName(ProjectBuildContext context, string filePath, string oldThemeStyleName, string newThemeStyleName) { - var file = context.FindFile(filePath); + var file = context.Files.FirstOrDefault(x => x.Name.Contains(filePath)); if (file == null) { return; 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 dd05c7e567..b8a8bf7be3 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 @@ -181,7 +181,7 @@ public abstract class AppTemplateBase : TemplateInfo protected void ConfigureTheme(ProjectBuildContext context, List steps) { - if (!context.BuildArgs.Theme.HasValue || IsDefaultThemeForTemplate(context.BuildArgs.Theme.Value)) + if (!context.BuildArgs.Theme.HasValue) { return; } @@ -189,10 +189,15 @@ public abstract class AppTemplateBase : TemplateInfo if (context.BuildArgs.Theme == Theme.LeptonX) { context.Symbols.Add("LEPTONX"); + steps.Add(new ChangeThemeStyleStep()); + } + + if (IsDefaultThemeForTemplate(context.BuildArgs.Theme.Value)) + { + return; } steps.Add(new ChangeThemeStep()); - steps.Add(new ChangeThemeStyleStep()); RemoveLeptonXThemePackagesFromPackageJsonFiles(steps, isProTemplate: IsPro()); } @@ -200,8 +205,8 @@ public abstract class AppTemplateBase : TemplateInfo { var defaultThemesForTemplates = new[] { - AppTemplate.DefaultTheme, AppProTemplate.DefaultTheme, AppNoLayersTemplate.DefaultTheme, - AppNoLayersProTemplate.DefaultTheme, MicroserviceProTemplate.DefaultTheme + AppTemplate.DefaultTheme, AppProTemplate.DefaultTheme, + AppNoLayersTemplate.DefaultTheme, AppNoLayersProTemplate.DefaultTheme }; return defaultThemesForTemplates.Contains(theme); @@ -209,7 +214,7 @@ public abstract class AppTemplateBase : TemplateInfo private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps, bool isProTemplate) { - var packageJsonFilePaths = new List() + var packageJsonFilePaths = new List { "/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json", "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json", @@ -218,10 +223,10 @@ public abstract class AppTemplateBase : TemplateInfo "/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json", "/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json", "/aspnet-core/MyCompanyName.MyProjectName.Host/package.json", - "/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json", + "/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json" }; - var blazorServerPackageJsonFilePaths = new List() + var blazorServerPackageJsonFilePaths = new List { "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json", "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json", @@ -229,7 +234,7 @@ public abstract class AppTemplateBase : TemplateInfo "/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json" }; - var angularPackageJsonFilePaths = new List() + var angularPackageJsonFilePaths = new List { "/angular/package.json" }; diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs index 309afae446..6ca88cb469 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs @@ -24,9 +24,68 @@ public abstract class MicroserviceTemplateBase : TemplateInfo DeleteUnrelatedProjects(context, steps); RandomizeStringEncryption(context, steps); UpdateNuGetConfig(context, steps); + ConfigureTheme(context, steps); return steps; } + + protected void ConfigureTheme(ProjectBuildContext context, List steps) + { + if (!context.BuildArgs.Theme.HasValue) + { + return; + } + + if (context.BuildArgs.Theme == Theme.LeptonX) + { + context.Symbols.Add("LEPTONX"); + steps.Add(new ChangeThemeStyleStep()); + return; + } + + steps.Add(new ChangeThemeStep()); + RemoveLeptonXThemePackagesFromPackageJsonFiles(steps); + } + + private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps) + { + var packageJsonFilePaths = new List + { + "/apps/auth-server/src/MyCompanyName.MyProjectName.AuthServer/package.json", + "/apps/web/src/MyCompanyName.MyProjectName.Web/package.json" + }; + + var blazorServerPackageJsonFilePaths = new List + { + "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server/package.json" + }; + + var angularPackageJsonFilePaths = new List + { + "/apps/angular/package.json" + }; + + var mvcUiPackageName = "@volo/abp.aspnetcore.mvc.ui.theme.leptonx"; + var blazorServerUiPackageName = "@volo/aspnetcore.components.server.leptonxtheme"; + var ngUiPackageName = "@volosoft/abp.ng.theme.lepton-x"; + + foreach (var packageJsonFilePath in packageJsonFilePaths) + { + steps.Add(new RemoveDependencyFromPackageJsonFileStep(packageJsonFilePath, mvcUiPackageName)); + } + + foreach (var blazorServerPackageJsonFilePath in blazorServerPackageJsonFilePaths) + { + steps.Add(new RemoveDependencyFromPackageJsonFileStep(blazorServerPackageJsonFilePath, mvcUiPackageName)); + steps.Add(new RemoveDependencyFromPackageJsonFileStep(blazorServerPackageJsonFilePath, blazorServerUiPackageName)); + } + + foreach (var angularPackageJsonFilePath in angularPackageJsonFilePaths) + { + steps.Add(new RemoveDependencyFromPackageJsonFileStep(angularPackageJsonFilePath, ngUiPackageName)); + steps.Add(new RemoveDependencyFromPackageJsonFileStep(angularPackageJsonFilePath, "bootstrap-icons")); + } + } private static void DeleteUnrelatedProjects(ProjectBuildContext context, List steps) { From 1b8557d2ba9e1b4d22e08024c021dbf015521270 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Sun, 17 Jul 2022 12:30:39 +0300 Subject: [PATCH 10/14] Update ChangeThemeStep.cs --- .../Building/Steps/ChangeThemeStep.cs | 52 ++++++++++++------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index 4f27e857ec..cfa41c65e1 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -265,42 +265,54 @@ public class ChangeThemeStep : ProjectBuildPipelineStep var projects = new Dictionary { {"Domain", "MyCompanyName.MyProjectName.Domain.csproj"}, - {"Domain", "MyCompanyName.MyProjectName.AdministrationService.Domain.csproj"}, {"Domain.Shared", "MyCompanyName.MyProjectName.Domain.Shared.csproj"}, - {"Domain.Shared", "MyCompanyName.MyProjectName.AdministrationService.Domain.Shared.csproj"}, {"Application", "MyCompanyName.MyProjectName.Application.csproj"}, - {"Application", "MyCompanyName.MyProjectName.AdministrationService.Application.csproj"}, {"Application.Contracts", "MyCompanyName.MyProjectName.Application.Contracts.csproj"}, - {"Application.Contracts", "MyCompanyName.MyProjectName.AdministrationService.Application.Contracts.csproj"}, {"Blazor.WebAssembly", "MyCompanyName.MyProjectName.Blazor.csproj"}, {"Blazor.Server", "MyCompanyName.MyProjectName.Blazor.Server.csproj"}, {"HttpApi", "MyCompanyName.MyProjectName.HttpApi.csproj"}, - {"HttpApi", "MyCompanyName.MyProjectName.AdministrationService.HttpApi.csproj"}, {"HttpApi.Client", "MyCompanyName.MyProjectName.HttpApi.Client.csproj"}, - {"HttpApi.Client", "MyCompanyName.MyProjectName.AdministrationService.HttpApi.Client.csproj"}, {"Web.Host", "MyCompanyName.MyProjectName.Web.Host.csproj"}, {"Web", "MyCompanyName.MyProjectName.Web.csproj"}, - {"Web", "MyCompanyName.MyProjectName.AdministrationService.Web.csproj"} }; foreach (var project in projects) { - var reference = $@"..\..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.{project.Key}\Volo.Abp.LeptonTheme.Management.{project.Key}.csproj"; - var projectFile = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(project.Value) && f.Name.Contains(".csproj")); - if (projectFile is null) - { - continue; - } - - projects[project.Key] = projectFile.Name; - - AddProjectReference(projectFile, reference); + AddLeptonThemeManagementReference(context, project); + } - AddModuleDependency(ConvertProjectFileToModuleFile(context, projectFile), - $"LeptonThemeManagement{ConvertProjectNameToModuleName(project.Key)}Module", - underManagementFolder: project.Key != "HttpApi"); + var microserviceServiceProjects = new Dictionary + { + {"Domain", "MyCompanyName.MyProjectName.AdministrationService.Domain.csproj"}, + {"Domain.Shared", "MyCompanyName.MyProjectName.AdministrationService.Domain.Shared.csproj"}, + {"Application", "MyCompanyName.MyProjectName.AdministrationService.Application.csproj"}, + {"Application.Contracts", "MyCompanyName.MyProjectName.AdministrationService.Application.Contracts.csproj"}, + {"HttpApi", "MyCompanyName.MyProjectName.AdministrationService.HttpApi.csproj"}, + {"HttpApi.Client", "MyCompanyName.MyProjectName.AdministrationService.HttpApi.Client.csproj"}, + {"Web", "MyCompanyName.MyProjectName.AdministrationService.Web.csproj"} + }; + + foreach (var microserviceServiceProject in microserviceServiceProjects) + { + AddLeptonThemeManagementReference(context, microserviceServiceProject); } } + + private void AddLeptonThemeManagementReference(ProjectBuildContext context, KeyValuePair projectInfo) + { + var reference = $@"..\..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.{projectInfo.Key}\Volo.Abp.LeptonTheme.Management.{projectInfo.Key}.csproj"; + var projectFile = context.Files.FirstOrDefault(f => !f.Name.Contains("Test") && f.Name.Contains(projectInfo.Value) && f.Name.Contains(".csproj")); + if (projectFile is null) + { + return; + } + + AddProjectReference(projectFile, reference); + + AddModuleDependency(ConvertProjectFileToModuleFile(context, projectFile), + $"LeptonThemeManagement{ConvertProjectNameToModuleName(projectInfo.Key)}Module", + underManagementFolder: projectInfo.Key != "HttpApi"); + } private void AddModuleDependency(FileEntry moduleFile, string dependency, bool underManagementFolder = true) { From c4ab2822e73ff5e7548d8da02a76bffa42e02cba Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 18 Jul 2022 11:35:25 +0300 Subject: [PATCH 11/14] CLI: Fix the switching theme to Lepton problems for nolayers template --- .../Building/Steps/ChangeThemeStep.cs | 2 +- ...RemoveDependencyFromPackageJsonFileStep.cs | 2 +- .../Templates/App/AppTemplateBase.cs | 24 +++++++++---------- .../Microservice/MicroserviceTemplateBase.cs | 8 +++---- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index cfa41c65e1..105f2d6e23 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -213,7 +213,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { var projectNames = new[] { - "Web", "HttpApi.Host", "AuthServer", "Web.Mvc", "Web.Mvc.Mongo" + "Web", "HttpApi.Host", "AuthServer", "Mvc", "Mvc.Mongo" }; foreach (var projectName in projectNames) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs index 00f7629f52..3eabb6621e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RemoveDependencyFromPackageJsonFileStep.cs @@ -17,7 +17,7 @@ public class RemoveDependencyFromPackageJsonFileStep : ProjectBuildPipelineStep public override void Execute(ProjectBuildContext context) { - var packageJsonFile = context.Files.FirstOrDefault(f => f.Name == _packageJsonFilePath); + var packageJsonFile = context.Files.FirstOrDefault(f => f.Name.Contains(_packageJsonFilePath)); if (packageJsonFile == null) { 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 b8a8bf7be3..118a188443 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 @@ -216,22 +216,22 @@ public abstract class AppTemplateBase : TemplateInfo { var packageJsonFilePaths = new List { - "/aspnet-core/src/MyCompanyName.MyProjectName.Web/package.json", - "/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package.json", - "/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json", - "/aspnet-core/src/MyCompanyName.MyProjectName.AuthServer/package.json", - "/aspnet-core/MyCompanyName.MyProjectName.Mvc/package.json", - "/aspnet-core/MyCompanyName.MyProjectName.Mvc.Mongo/package.json", - "/aspnet-core/MyCompanyName.MyProjectName.Host/package.json", - "/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/package.json" + "/MyCompanyName.MyProjectName.Web/package.json", + "/MyCompanyName.MyProjectName.Web.Host/package.json", + "/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json", + "/MyCompanyName.MyProjectName.AuthServer/package.json", + "/MyCompanyName.MyProjectName.Mvc/package.json", + "/MyCompanyName.MyProjectName.Mvc.Mongo/package.json", + "/MyCompanyName.MyProjectName.Host/package.json", + "/MyCompanyName.MyProjectName.Host.Mongo/package.json" }; var blazorServerPackageJsonFilePaths = new List { - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/package.json", - "/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json", - "/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/package.json", - "/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json" + "/MyCompanyName.MyProjectName.Blazor.Server/package.json", + "/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json", + "/MyCompanyName.MyProjectName.Blazor.Server/package.json", + "/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json" }; var angularPackageJsonFilePaths = new List diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs index 6ca88cb469..71f090a576 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Microservice/MicroserviceTemplateBase.cs @@ -51,18 +51,18 @@ public abstract class MicroserviceTemplateBase : TemplateInfo { var packageJsonFilePaths = new List { - "/apps/auth-server/src/MyCompanyName.MyProjectName.AuthServer/package.json", - "/apps/web/src/MyCompanyName.MyProjectName.Web/package.json" + "/MyCompanyName.MyProjectName.AuthServer/package.json", + "/MyCompanyName.MyProjectName.Web/package.json" }; var blazorServerPackageJsonFilePaths = new List { - "/apps/blazor/src/MyCompanyName.MyProjectName.Blazor.Server/package.json" + "/MyCompanyName.MyProjectName.Blazor.Server/package.json" }; var angularPackageJsonFilePaths = new List { - "/apps/angular/package.json" + "/angular/package.json" }; var mvcUiPackageName = "@volo/abp.aspnetcore.mvc.ui.theme.leptonx"; From 3ae013f0ba0fce18e8aa77c1ca0a2f4e578c4219 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 18 Jul 2022 11:52:52 +0300 Subject: [PATCH 12/14] Update ChangeThemeStep.cs --- .../Building/Steps/ChangeThemeStep.cs | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index 105f2d6e23..24c08e301b 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -204,8 +204,14 @@ public class ChangeThemeStep : ProjectBuildPipelineStep foreach (var projectName in projectNames) { + var moduleFile = ConvertProjectFileToModuleFile(context, file); + if (moduleFile == null) + { + continue; + } + AddProjectReference(file, $@"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.{projectName}\Volo.Abp.LeptonTheme.Management.{projectName}.csproj"); - AddModuleDependency(ConvertProjectFileToModuleFile(context, file), $"LeptonThemeManagement{ConvertProjectNameToModuleName($"{projectName}")}Module"); + AddModuleDependency(moduleFile, $"LeptonThemeManagement{ConvertProjectNameToModuleName($"{projectName}")}Module"); } } @@ -226,6 +232,10 @@ public class ChangeThemeStep : ProjectBuildPipelineStep } var moduleFile = ConvertProjectFileToModuleFile(context, projectFile); + if (moduleFile == null) + { + continue; + } ReplacePackageReferenceWithProjectReference( context, @@ -306,11 +316,16 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { return; } + + var moduleFile = ConvertProjectFileToModuleFile(context, projectFile); + if (moduleFile == null) + { + return; + } AddProjectReference(projectFile, reference); - AddModuleDependency(ConvertProjectFileToModuleFile(context, projectFile), - $"LeptonThemeManagement{ConvertProjectNameToModuleName(projectInfo.Key)}Module", + AddModuleDependency(moduleFile, $"LeptonThemeManagement{ConvertProjectNameToModuleName(projectInfo.Key)}Module", underManagementFolder: projectInfo.Key != "HttpApi"); } @@ -555,18 +570,23 @@ public class ChangeThemeStep : ProjectBuildPipelineStep private static FileEntry ConvertProjectFileToModuleFile(ProjectBuildContext context, FileEntry projectFile) { var splittedProjectFileName = projectFile.Name.RemovePostFix("/").Split("/"); - var fileName = splittedProjectFileName.Last(); splittedProjectFileName = splittedProjectFileName.Take(splittedProjectFileName.Length - 1).ToArray(); + var fileName = splittedProjectFileName?.Last(); + if (fileName == null) + { + return null; + } + fileName = fileName .Replace("MyCompanyName.", "") .Replace(".csproj", "Module") .Replace(".", ""); fileName = ConvertProjectNameToModuleName(fileName); - - return context.Files.First(f => f.Name.Contains(splittedProjectFileName.Last() + "/" + fileName)); + + return context.Files.FirstOrDefault(f => f.Name.Contains(splittedProjectFileName.Last() + "/" + fileName)); } private static string ConvertProjectNameToModuleName(string moduleName) From 9d006f2e4c2abc0937a98624c3a9bfbe258d60f8 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 18 Jul 2022 11:56:05 +0300 Subject: [PATCH 13/14] Update ChangeThemeStep.cs --- .../ProjectBuilding/Building/Steps/ChangeThemeStep.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index 24c08e301b..7920a8b1b4 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -179,11 +179,11 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #endregion - #region MyCompanyName.MyProjectName.Web.Mvc && MyCompanyName.MyProjectName.Web.Mvc.Mongo + #region MyCompanyName.MyProjectName.Mvc && MyCompanyName.MyProjectName.Mvc.Mongo var projectNames = new[] {"Web", "HttpApi", "Application"}; - ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.csproj", projectNames); - ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/MyCompanyName.MyProjectName.Web.Mvc/MyCompanyName.MyProjectName.Web.Mvc.Mongo.csproj", projectNames); + ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj", projectNames); + ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.Mongo.csproj", projectNames); #endregion @@ -610,8 +610,8 @@ public class ChangeThemeStep : ProjectBuildPipelineStep {"Web", "MyProjectNameWebModule"}, {"HttpApi.Host", "MyProjectNameHttpApiHostModule"}, {"AuthServer", "MyProjectNameAuthServerModule"}, - {"Web.Mvc", "MyProjectNameWebModule"}, - {"Web.Mvc.Mongo", "MyProjectNameWebModule"}, + {"Mvc", "MyProjectNameWebModule"}, + {"Mvc.Mongo", "MyProjectNameWebModule"}, }; foreach (var project in projects) From 04a26b9c3ffbb7e4fc2a6926de9edd3f1b1cd8e6 Mon Sep 17 00:00:00 2001 From: Engincan VESKE Date: Mon, 18 Jul 2022 13:16:39 +0300 Subject: [PATCH 14/14] CLI: Fix wrong path for mvc nolayers template --- .../Building/Steps/ChangeThemeStep.cs | 23 +++++++++---------- .../Templates/App/AppTemplateBase.cs | 6 ++--- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs index 7920a8b1b4..dcf8496e66 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs @@ -182,8 +182,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep #region MyCompanyName.MyProjectName.Mvc && MyCompanyName.MyProjectName.Mvc.Mongo var projectNames = new[] {"Web", "HttpApi", "Application"}; - ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.csproj", projectNames); - ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.Mvc.Mongo.csproj", projectNames); + ConfigureLeptonManagementPackagesForNoLayersMvc(context, @"/MyCompanyName.MyProjectName.Mvc/MyCompanyName.MyProjectName.csproj", projectNames); #endregion @@ -219,12 +218,13 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { var projectNames = new[] { - "Web", "HttpApi.Host", "AuthServer", "Mvc", "Mvc.Mongo" + ".Web", ".HttpApi.Host", ".AuthServer", + "" //for app-nolayers-mvc }; foreach (var projectName in projectNames) { - var projectPath = $"/MyCompanyName.MyProjectName.{projectName}/MyCompanyName.MyProjectName.{projectName}.csproj"; + var projectPath = $"/MyCompanyName.MyProjectName{projectName}/MyCompanyName.MyProjectName{projectName}.csproj"; var projectFile = context.Files.FirstOrDefault(x => x.Name.Contains(projectPath)); if (projectFile == null) { @@ -607,25 +607,24 @@ public class ChangeThemeStep : ProjectBuildPipelineStep { var projects = new Dictionary { - {"Web", "MyProjectNameWebModule"}, - {"HttpApi.Host", "MyProjectNameHttpApiHostModule"}, - {"AuthServer", "MyProjectNameAuthServerModule"}, - {"Mvc", "MyProjectNameWebModule"}, - {"Mvc.Mongo", "MyProjectNameWebModule"}, + {".Web", "MyProjectNameWebModule"}, + {".HttpApi.Host", "MyProjectNameHttpApiHostModule"}, + {".AuthServer", "MyProjectNameAuthServerModule"}, + {"", "MyProjectNameWebModule"} }; foreach (var project in projects) { ReplacePackageReferenceWithProjectReference( context, - $"/MyCompanyName.MyProjectName.{project.Key}/MyCompanyName.MyProjectName.{project.Key}.csproj", + $"/MyCompanyName.MyProjectName{project.Key}/MyCompanyName.MyProjectName{project.Key}.csproj", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", @"..\..\..\..\..\modules\basic-theme\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" ); ChangeNamespaceAndKeyword( context, - $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"/MyCompanyName.MyProjectName{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic", $"AbpAspNetCoreMvcUi{defaultThemeName}ThemeModule", @@ -634,7 +633,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep ChangeNamespaceAndKeyword( context, - $"/MyCompanyName.MyProjectName.{project.Key}/{project.Value}.cs", + $"/MyCompanyName.MyProjectName{project.Key}/{project.Value}.cs", $"Volo.Abp.AspNetCore.Mvc.UI.Theme.{defaultThemeName}.Bundling", "Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Bundling", $"{defaultThemeName}ThemeBundles.Styles.Global", 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 118a188443..a1194d928a 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 @@ -209,7 +209,7 @@ public abstract class AppTemplateBase : TemplateInfo AppNoLayersTemplate.DefaultTheme, AppNoLayersProTemplate.DefaultTheme }; - return defaultThemesForTemplates.Contains(theme); + return defaultThemesForTemplates.Any(defaultTheme => defaultTheme == theme); } private static void RemoveLeptonXThemePackagesFromPackageJsonFiles(List steps, bool isProTemplate) @@ -220,8 +220,7 @@ public abstract class AppTemplateBase : TemplateInfo "/MyCompanyName.MyProjectName.Web.Host/package.json", "/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package.json", "/MyCompanyName.MyProjectName.AuthServer/package.json", - "/MyCompanyName.MyProjectName.Mvc/package.json", - "/MyCompanyName.MyProjectName.Mvc.Mongo/package.json", + "/MyCompanyName.MyProjectName/package.json", "/MyCompanyName.MyProjectName.Host/package.json", "/MyCompanyName.MyProjectName.Host.Mongo/package.json" }; @@ -230,7 +229,6 @@ public abstract class AppTemplateBase : TemplateInfo { "/MyCompanyName.MyProjectName.Blazor.Server/package.json", "/MyCompanyName.MyProjectName.Blazor.Server.Tiered/package.json", - "/MyCompanyName.MyProjectName.Blazor.Server/package.json", "/MyCompanyName.MyProjectName.Blazor.Server.Mongo/package.json" };