mirror of https://github.com/abpframework/abp.git
4 changed files with 63 additions and 56 deletions
@ -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)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -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}\"")); |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue