Browse Source

Refactor & enhancements

pull/15516/head
Yunus Emre Kalkan 3 years ago
parent
commit
80310028cd
  1. 57
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMoveProjectsStep.cs
  2. 40
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveProjectStep.cs
  3. 19
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs
  4. 3
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs

57
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/AppNoLayersMoveProjectsStep.cs

@ -0,0 +1,57 @@
using System;
using System.Linq;
namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps;
public class AppNoLayersMoveProjectsStep : ProjectBuildPipelineStep
{
public override void Execute(ProjectBuildContext context)
{
MoveFiles(context, "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client",
"/aspnet-core/MyCompanyName.MyProjectName.Blazor");
MoveFiles(context, "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server",
"/aspnet-core/MyCompanyName.MyProjectName.Host");
MoveFiles(context, "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared",
"/aspnet-core/MyCompanyName.MyProjectName.Contracts");
ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Client\\MyCompanyName.MyProjectName.Blazor.csproj",
"MyCompanyName.MyProjectName.Blazor\\MyCompanyName.MyProjectName.Blazor.csproj");
ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Server\\MyCompanyName.MyProjectName.Host.csproj",
"MyCompanyName.MyProjectName.Host\\MyCompanyName.MyProjectName.Host.csproj");
ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Server.Mongo\\MyCompanyName.MyProjectName.Host.csproj",
"MyCompanyName.MyProjectName.Host\\MyCompanyName.MyProjectName.Host.csproj");
ModifySolutionFile(context, "MyCompanyName.MyProjectName.Blazor.WebAssembly\\Shared\\MyCompanyName.MyProjectName.Contracts.csproj",
"MyCompanyName.MyProjectName.Contracts\\MyCompanyName.MyProjectName.Contracts.csproj");
ModifyProjectFiles(context, "..\\Shared\\MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared.csproj",
"..\\MyCompanyName.MyProjectName.Contracts\\MyCompanyName.MyProjectName.Contracts.csproj");
ModifyProjectFiles(context, "..\\Client\\MyCompanyName.MyProjectName.Blazor.WebAssembly.Client.csproj",
"..\\MyCompanyName.MyProjectName.Blazor\\MyCompanyName.MyProjectName.Blazor.csproj");
}
public void MoveFiles(ProjectBuildContext context, string projectFolder, string newProjectFolder)
{
var fileEntries = context.Files.Where(file => file.Name.StartsWith(projectFolder)).ToList();
foreach (var fileEntry in fileEntries)
{
fileEntry.SetName(fileEntry.Name.ReplaceFirst(projectFolder, newProjectFolder));
}
}
public void ModifySolutionFile(ProjectBuildContext context, string pathInSlnFile, string newPathInSlnFile)
{
var slnFile = context.Files.First(file => file.Name.EndsWith(".sln"));
slnFile.SetContent(slnFile.Content.Replace($"\"{pathInSlnFile}\"", $"\"{newPathInSlnFile}\""));
}
public void ModifyProjectFiles(ProjectBuildContext context, string oldContent, string newContent)
{
var projectFiles = context.Files.Where(file => file.Name.EndsWith(".csproj"));
foreach (var projectFile in projectFiles)
{
projectFile.SetContent(projectFile.Content.Replace(oldContent,newContent));
}
}
}

40
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/MoveProjectStep.cs

@ -1,40 +0,0 @@
using System;
using System.Linq;
namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps;
public class MoveProjectStep : ProjectBuildPipelineStep
{
private readonly string _pathInSlnFile;
private readonly string _newPathInSlnFile;
private readonly string _projectFolder;
private readonly string _newProjectFolder;
public MoveProjectStep(string projectFolder, string newProjectFolder, string pathInSlnFile, string newPathInSlnFile)
{
_pathInSlnFile = pathInSlnFile;
_newPathInSlnFile = newPathInSlnFile;
_projectFolder = projectFolder.EnsureEndsWith('/');
_newProjectFolder = newProjectFolder.EnsureEndsWith('/');
}
public override void Execute(ProjectBuildContext context)
{
var fileEntries = context.Files.Where(file => file.Name.StartsWith(_projectFolder)).ToList();
foreach (var fileEntry in fileEntries)
{
var newName = fileEntry.Name.ReplaceFirst(_projectFolder, _newProjectFolder);
if (newName.IsIn("", "/"))
{
context.Files.Remove(fileEntry);
continue;
}
fileEntry.SetName(newName);
}
var slnFile = context.Files.First(file => file.Name.EndsWith(".sln"));
slnFile.SetContent(slnFile.Content.Replace($"\"{_pathInSlnFile}\"", $"\"{_newPathInSlnFile}\""));
}
}

19
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppNoLayersTemplateBase.cs

@ -29,15 +29,15 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc.Mongo"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Host.Mongo"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server.Mongo"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo", projectFolderPath: "/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server.Mongo", projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo"));
break;
case DatabaseProvider.MongoDb:
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Mvc"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Host"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.Server"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server", projectFolderPath: "/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Server", projectFolderPath: "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server"));
steps.Add(new MoveFolderStep("/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo", "/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server"));
steps.Add(new MoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo", "/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Mvc.Mongo", "MyCompanyName.MyProjectName.Mvc"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Host.Mongo", "MyCompanyName.MyProjectName.Host"));
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.Server.Mongo", "MyCompanyName.MyProjectName.Blazor.Server"));
@ -77,18 +77,7 @@ public abstract class AppNoLayersTemplateBase : AppTemplateBase
steps.Add(new ProjectRenameStep("MyCompanyName.MyProjectName.Blazor.WebAssembly.Shared",
"MyCompanyName.MyProjectName.Contracts"));
steps.Add(new MoveProjectStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Client",
"/aspnet-core/MyCompanyName.MyProjectName.Blazor",
"MyCompanyName.MyProjectName.Blazor.WebAssembly\\Client\\MyCompanyName.MyProjectName.Blazor.csproj",
"MyCompanyName.MyProjectName.Blazor\\MyCompanyName.MyProjectName.Blazor.csproj"));
steps.Add(new MoveProjectStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server",
"/aspnet-core/MyCompanyName.MyProjectName.Host",
"MyCompanyName.MyProjectName.Blazor.WebAssembly\\Server\\MyCompanyName.MyProjectName.Host.csproj",
"MyCompanyName.MyProjectName.Host\\MyCompanyName.MyProjectName.Host.csproj"));
steps.Add(new MoveProjectStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Shared",
"/aspnet-core/MyCompanyName.MyProjectName.Contracts",
"MyCompanyName.MyProjectName.Blazor.WebAssembly\\Shared\\MyCompanyName.MyProjectName.Contracts.csproj",
"MyCompanyName.MyProjectName.Contracts\\MyCompanyName.MyProjectName.Contracts.csproj"));
steps.Add(new AppNoLayersMoveProjectsStep());
steps.Add(new RemoveFolderStep("/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly"));
break;

3
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/App/AppTemplateBase.cs

@ -584,7 +584,8 @@ public abstract class AppTemplateBase : TemplateInfo
"https://localhost:44306",
"https://localhost:44307",
"https://localhost:44308",
"https://localhost:44309"
"https://localhost:44309",
"https://localhost:44310"
}
)
);

Loading…
Cancel
Save