Browse Source

Merge pull request #13580 from abpframework/EngincanV/fix-theme-switch

CLI: Switching to Lepton Theme is not work as expected
pull/13581/head
liangshiwei 4 years ago
committed by GitHub
parent
commit
db18bc53a2
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 30
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs

30
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/ChangeThemeStep.cs

@ -141,6 +141,13 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
"AbpAspNetCoreComponentsWebAssemblyLeptonThemeModule"
);
ChangeNamespace(
context,
"/MyCompanyName.MyProjectName.Blazor/MyProjectNameBlazorModule.cs",
"Volo.Abp.AspNetCore.Components.WebAssembly.LeptonXTheme",
"Volo.Abp.AspNetCore.Components.WebAssembly.LeptonTheme"
);
#endregion
#region MyCompanyName.MyProjectName.Blazor.Server && MyCompanyName.MyProjectName.Blazor.Server.Tiered
@ -210,7 +217,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
}
AddProjectReference(file, $@"..\..\..\..\lepton-theme\src\Volo.Abp.LeptonTheme.Management.{projectName}\Volo.Abp.LeptonTheme.Management.{projectName}.csproj");
AddModuleDependency(moduleFile, $"LeptonThemeManagement{ConvertProjectNameToModuleName($"{projectName}")}Module");
AddModuleDependency(moduleFile, projectName, $"LeptonThemeManagement{ConvertProjectNameToModuleName($"{projectName}")}Module");
}
}
@ -325,21 +332,22 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
AddProjectReference(projectFile, reference);
AddModuleDependency(moduleFile, $"LeptonThemeManagement{ConvertProjectNameToModuleName(projectInfo.Key)}Module",
AddModuleDependency(moduleFile, projectInfo.Key, $"LeptonThemeManagement{ConvertProjectNameToModuleName(projectInfo.Key)}Module",
underManagementFolder: projectInfo.Key != "HttpApi");
}
private void AddModuleDependency(FileEntry moduleFile, string dependency, bool underManagementFolder = true)
private void AddModuleDependency(FileEntry moduleFile, string projectName, string dependency, bool underManagementFolder = true)
{
var lines = moduleFile.GetLines();
var projectNames = new[] { "Blazor", "Blazor.Server", "Blazor.WebAssembly" };
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" + (underManagementFolder ? ".Management" : "").EnsureEndsWith(';') + Environment.NewLine;
lines[i - 1] = lines[i - 1] + ("using Volo.Abp.LeptonTheme" + (underManagementFolder ? ".Management." : ".") + (projectNames.Any(p => p == projectName) ? projectName : "")).TrimEnd('.').EnsureEndsWith(';') + Environment.NewLine;
}
if (lines[i].Contains("public class MyProjectName") && lines[i-1].Contains(")]"))
{
lines[i - 2] = lines[i - 2] + "," + Environment.NewLine + $"\ttypeof({dependency})";
@ -584,9 +592,7 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
.Replace(".csproj", "Module")
.Replace(".", "");
fileName = ConvertProjectNameToModuleName(fileName);
return context.Files.FirstOrDefault(f => f.Name.Contains(splittedProjectFileName.Last() + "/" + fileName));
return context.Files.FirstOrDefault(f => f.Name.Contains(splittedProjectFileName.Last() + "/" + fileName) && f.Name.EndsWith("Module.cs"));
}
private static string ConvertProjectNameToModuleName(string moduleName)
@ -796,6 +802,12 @@ public class ChangeThemeStep : ProjectBuildPipelineStep
"BlazorLeptonXThemeBundles.Scripts.Global",
"BlazorLeptonThemeBundles.Scripts.Global"
);
RemoveLinesByStatement(
context,
$"/MyCompanyName.MyProjectName.{projectName}/MyProjectNameBlazorModule.cs",
"Volo.Abp.LeptonX.Shared;"
);
}
}

Loading…
Cancel
Save