Browse Source

Created ISolutionFileModuleAdder

pull/10363/head
Yunus Emre Kalkan 4 years ago
parent
commit
71c6b71ebd
  1. 9
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/ISolutionFileModuleAdder.cs
  2. 42
      studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/SolutionFileModuleAdder.cs
  3. 28
      studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddToSolutionFileStep.cs

9
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/ISolutionFileModuleAdder.cs

@ -0,0 +1,9 @@
using System.Threading.Tasks;
namespace Volo.Abp.Studio.Solution
{
public interface ISolutionFileModuleAdder
{
Task AddAsync(string TargetModule, string ModuleName);
}
}

42
studio/src/Volo.Abp.Studio.Domain.CommonServices/Volo/Abp/Studio/Solution/SolutionFileModuleAdder.cs

@ -0,0 +1,42 @@
using System;
using System.IO;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Studio.Modules;
namespace Volo.Abp.Studio.Solution
{
public class SolutionFileModuleAdder : ISolutionFileModuleAdder, ITransientDependency
{
private readonly IDotnetSlnFileModifierService _dotnetSlnFileModifierService;
public SolutionFileModuleAdder(IDotnetSlnFileModifierService dotnetSlnFileModifierService)
{
_dotnetSlnFileModifierService = dotnetSlnFileModifierService;
}
public async Task AddAsync(string TargetModule, string ModuleName)
{
var targetFolder = Path.Combine(Path.GetDirectoryName(TargetModule), "modules", ModuleName);;
var slnFile = TargetModule.RemovePostFix(ModuleConsts.FileExtension) + ".sln";
var moduleSrcFolder = Path.Combine(targetFolder, "src");
var moduleTestFolder = Path.Combine(targetFolder, "test");
await AddProjectsUnderDirectoryToSolutionFile(slnFile, moduleSrcFolder, $"modules/{ModuleName}");
await AddProjectsUnderDirectoryToSolutionFile(slnFile, moduleTestFolder, $"test/{ModuleName}.Tests");
}
private async Task AddProjectsUnderDirectoryToSolutionFile(
string slnFile,
string directory,
string slnTargetFolder)
{
var projects = Directory.GetFiles(directory, "*.csproj", SearchOption.AllDirectories);
foreach (var project in projects)
{
await _dotnetSlnFileModifierService.AddProjectAsync(slnFile, project, slnTargetFolder);
}
}
}
}

28
studio/src/Volo.Abp.Studio.ModuleInstaller/Volo/Abp/Studio/ModuleInstalling/Steps/AddToSolutionFileStep.cs

@ -1,8 +1,5 @@
using System;
using System.IO;
using System.Threading.Tasks;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Studio.Modules;
using Volo.Abp.Studio.Solution;
namespace Volo.Abp.Studio.ModuleInstalling.Steps
@ -11,28 +8,9 @@ namespace Volo.Abp.Studio.ModuleInstalling.Steps
{
public override async Task ExecuteAsync(ModuleInstallingContext context)
{
var slnFile = context.TargetModule.RemovePostFix(ModuleConsts.FileExtension) + ".sln";
var moduleSrcFolder = Path.Combine(context.GetTargetSourceCodeFolder(), "src");
var moduleTestFolder = Path.Combine(context.GetTargetSourceCodeFolder(), "test");
var _solutionFileModuleAdder = context.ServiceProvider.GetRequiredService<ISolutionFileModuleAdder>();
await AddProjectsUnderDirectoryToSolutionFile(context, slnFile, moduleSrcFolder, $"modules/{context.ModuleName}");
await AddProjectsUnderDirectoryToSolutionFile(context, slnFile, moduleTestFolder, $"test/{context.ModuleName}.Tests");
}
private static async Task AddProjectsUnderDirectoryToSolutionFile(
ModuleInstallingContext context,
string slnFile,
string directory,
string slnTargetFolder)
{
var _dotnetSlnFileModifier = context.ServiceProvider.GetRequiredService<IDotnetSlnFileModifierService>();
var projects = Directory.GetFiles(directory, "*.csproj", SearchOption.AllDirectories);
foreach (var project in projects)
{
await _dotnetSlnFileModifier.AddProjectAsync(slnFile, project, slnTargetFolder);
}
await _solutionFileModuleAdder.AddAsync(context.TargetModule, context.ModuleName);
}
}
}

Loading…
Cancel
Save