Browse Source

Remove HttpApi.Host to HttpApi dependency. Add MvcTemplateProjectRenameStep.

pull/1148/head
Halil ibrahim Kalkan 7 years ago
parent
commit
5d3a1efe34
  1. 60
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameHelper.cs
  2. 56
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenameStep.cs
  3. 3
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplate.cs
  4. 45
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateProjectRenameStep.cs
  5. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs
  6. 9
      templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj
  7. 11
      templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs

60
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/RenameHelper.cs

@ -0,0 +1,60 @@
using System.Collections.Generic;
using System.Linq;
using Volo.Abp.Cli.ProjectBuilding.Files;
namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps
{
public static class RenameHelper
{
public static void RenameAll(List<FileEntry> entries, string placeHolder, string name)
{
RenameDirectoryRecursively(entries, placeHolder, name);
RenameAllFiles(entries, placeHolder, name);
ReplaceContent(entries, placeHolder, name);
}
private static void RenameDirectoryRecursively(List<FileEntry> entries, string placeHolder, string name)
{
foreach (var entry in entries.Where(e => e.IsDirectory))
{
if (entry.Name.Contains(placeHolder))
{
entry.SetName(entry.Name.Replace(placeHolder, name));
}
}
}
private static void RenameAllFiles(List<FileEntry> entries, string placeHolder, string name)
{
foreach (var entry in entries.Where(e => !e.IsDirectory))
{
if (entry.Name.Contains(placeHolder))
{
entry.SetName(entry.Name.Replace(placeHolder, name));
}
}
}
private static void ReplaceContent(List<FileEntry> entries, string placeHolder, string name)
{
foreach (var entry in entries.Where(e => !e.IsDirectory))
{
if (entry.Content.Length < placeHolder.Length)
{
continue;
}
if (entry.IsBinaryFile)
{
continue;
}
var newContent = entry.Content.Replace(placeHolder, name);
if (newContent != entry.Content)
{
entry.SetContent(newContent);
}
}
}
}
}

56
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Building/Steps/SolutionRenameStep.cs

@ -52,64 +52,14 @@ namespace Volo.Abp.Cli.ProjectBuilding.Building.Steps
{ {
if (_companyNamePlaceHolder != null && _companyName != null) if (_companyNamePlaceHolder != null && _companyName != null)
{ {
RenameDirectoryRecursively(_companyNamePlaceHolder, _companyName); RenameHelper.RenameAll(_entries, _companyNamePlaceHolder, _companyName);
RenameAllFiles(_companyNamePlaceHolder, _companyName);
ReplaceContent(_companyNamePlaceHolder, _companyName);
} }
else if (_companyNamePlaceHolder != null) else if (_companyNamePlaceHolder != null)
{ {
RenameDirectoryRecursively(_companyNamePlaceHolder + "." + _projectNamePlaceHolder, _projectNamePlaceHolder); RenameHelper.RenameAll(_entries, _companyNamePlaceHolder + "." + _projectNamePlaceHolder, _projectNamePlaceHolder);
RenameAllFiles(_companyNamePlaceHolder + "." + _projectNamePlaceHolder, _projectNamePlaceHolder);
ReplaceContent(_companyNamePlaceHolder + "." + _projectNamePlaceHolder, _projectNamePlaceHolder);
} }
RenameDirectoryRecursively(_projectNamePlaceHolder, _projectName); RenameHelper.RenameAll(_entries, _projectNamePlaceHolder, _projectName);
RenameAllFiles(_projectNamePlaceHolder, _projectName);
ReplaceContent(_projectNamePlaceHolder, _projectName);
}
private void RenameDirectoryRecursively(string placeHolder, string name)
{
foreach (var entry in _entries.Where(e => e.IsDirectory))
{
if (entry.Name.Contains(placeHolder))
{
entry.SetName(entry.Name.Replace(placeHolder, name));
}
}
}
private void RenameAllFiles(string placeHolder, string name)
{
foreach (var entry in _entries.Where(e => !e.IsDirectory))
{
if (entry.Name.Contains(placeHolder))
{
entry.SetName(entry.Name.Replace(placeHolder, name));
}
}
}
private void ReplaceContent(string placeHolder, string name)
{
foreach (var entry in _entries.Where(e => !e.IsDirectory))
{
if (entry.Content.Length < placeHolder.Length)
{
continue;
}
if (entry.IsBinaryFile)
{
continue;
}
var newContent = entry.Content.Replace(placeHolder, name);
if (newContent != entry.Content)
{
entry.SetContent(newContent);
}
}
} }
} }
} }

3
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplate.cs

@ -32,7 +32,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc
{ {
if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb) if (context.BuildArgs.DatabaseProvider == DatabaseProvider.MongoDb)
{ {
steps.Add(new SwitchEntityFrameworkCoreToMongoDbStep()); steps.Add(new MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep());
} }
if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore) if (context.BuildArgs.DatabaseProvider != DatabaseProvider.EntityFrameworkCore)
@ -55,6 +55,7 @@ namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc
{ {
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web"));
steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/test/MyCompanyName.MyProjectName.Web.Tests")); steps.Add(new RemoveProjectFromSolutionStep("MyCompanyName.MyProjectName.Web.Tests", projectFolderPath: "/test/MyCompanyName.MyProjectName.Web.Tests"));
steps.Add(new MvcTemplateProjectRenameStep("MyCompanyName.MyProjectName.Web.Host", "MyCompanyName.MyProjectName.Web"));
//TODO: Rename Web.Host to Web //TODO: Rename Web.Host to Web
//TODO: Rename HttpApi.Host to HttpApi //TODO: Rename HttpApi.Host to HttpApi
} }

45
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateProjectRenameStep.cs

@ -0,0 +1,45 @@
using Volo.Abp.Cli.ProjectBuilding.Building;
using Volo.Abp.Cli.ProjectBuilding.Building.Steps;
namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc
{
public class MvcTemplateProjectRenameStep : ProjectBuildPipelineStep
{
private readonly string _oldProjectName;
private readonly string _newProjectName;
private readonly string _folder;
public MvcTemplateProjectRenameStep(
string oldProjectName,
string newProjectName,
string folder = "/src/")
{
_oldProjectName = oldProjectName;
_newProjectName = newProjectName;
_folder = folder;
}
public override void Execute(ProjectBuildContext context)
{
ReplaceInFile(
context,
"/MyCompanyName.MyProjectName.sln",
_oldProjectName,
_newProjectName
);
RenameHelper.RenameAll(context.Files, _oldProjectName, _newProjectName);
}
public void ReplaceInFile(
ProjectBuildContext context,
string filePath,
string oldText,
string newText)
{
var file = context.GetFile(filePath);
file.NormalizeLineEndings();
file.SetContent(file.Content.Replace(oldText, newText));
}
}
}

2
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/SwitchEntityFrameworkCoreToMongoDbStep.cs → framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Templates/Mvc/MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep.cs

@ -3,7 +3,7 @@ using Volo.Abp.Cli.ProjectBuilding.Building;
namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc namespace Volo.Abp.Cli.ProjectBuilding.Templates.Mvc
{ {
public class SwitchEntityFrameworkCoreToMongoDbStep : ProjectBuildPipelineStep public class MvcTemplateSwitchEntityFrameworkCoreToMongoDbStep : ProjectBuildPipelineStep
{ {
public override void Execute(ProjectBuildContext context) public override void Execute(ProjectBuildContext context)
{ {

9
templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyCompanyName.MyProjectName.HttpApi.Host.csproj

@ -19,11 +19,14 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\..\..\abp\framework\src\Volo.Abp.AspNetCore.MultiTenancy\Volo.Abp.AspNetCore.MultiTenancy.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.MultiTenancy\Volo.Abp.AspNetCore.MultiTenancy.csproj" />
<ProjectReference Include="..\..\..\..\..\abp\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" /> <ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.HttpApi\Volo.Abp.Identity.HttpApi.csproj" />
<ProjectReference Include="..\..\..\..\modules\permission-management\src\Volo.Abp.PermissionManagement.HttpApi\Volo.Abp.PermissionManagement.HttpApi.csproj" />
<ProjectReference Include="..\..\..\..\modules\tenant-management\src\Volo.Abp.TenantManagement.HttpApi\Volo.Abp.TenantManagement.HttpApi.csproj" />
<ProjectReference Include="..\..\..\..\modules\feature-management\src\Volo.Abp.FeatureManagement.HttpApi\Volo.Abp.FeatureManagement.HttpApi.csproj" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.Application\MyCompanyName.MyProjectName.Application.csproj" /> <ProjectReference Include="..\MyCompanyName.MyProjectName.Application\MyCompanyName.MyProjectName.Application.csproj" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations\MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations.csproj" /> <ProjectReference Include="..\MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations\MyCompanyName.MyProjectName.EntityFrameworkCore.DbMigrations.csproj" />
<ProjectReference Include="..\MyCompanyName.MyProjectName.HttpApi\MyCompanyName.MyProjectName.HttpApi.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

11
templates/mvc/src/MyCompanyName.MyProjectName.HttpApi.Host/MyProjectNameHttpApiHostModule.cs

@ -12,8 +12,12 @@ using Volo.Abp;
using Volo.Abp.AspNetCore.MultiTenancy; using Volo.Abp.AspNetCore.MultiTenancy;
using Volo.Abp.AspNetCore.Mvc; using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Autofac; using Volo.Abp.Autofac;
using Volo.Abp.FeatureManagement;
using Volo.Abp.Identity;
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement.HttpApi;
using Volo.Abp.TenantManagement;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
namespace MyCompanyName.MyProjectName namespace MyCompanyName.MyProjectName
@ -21,9 +25,12 @@ namespace MyCompanyName.MyProjectName
[DependsOn( [DependsOn(
typeof(AbpAutofacModule), typeof(AbpAutofacModule),
typeof(AbpAspNetCoreMultiTenancyModule), typeof(AbpAspNetCoreMultiTenancyModule),
typeof(MyProjectNameHttpApiModule),
typeof(MyProjectNameApplicationModule), typeof(MyProjectNameApplicationModule),
typeof(MyProjectNameEntityFrameworkCoreModule) typeof(MyProjectNameEntityFrameworkCoreModule),
typeof(AbpIdentityHttpApiModule),
typeof(AbpPermissionManagementHttpApiModule),
typeof(AbpTenantManagementHttpApiModule),
typeof(AbpFeatureManagementHttpApiModule)
)] )]
public class MyProjectNameHttpApiHostModule : AbpModule public class MyProjectNameHttpApiHostModule : AbpModule
{ {

Loading…
Cancel
Save