Merge pull request #17962 from abpframework/masum/issue-17959

Fix: add route item to app-routing after create module
pull/17973/head
Engincan VESKE 2 years ago committed by GitHub
commit a862739645
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
@ -71,6 +72,7 @@ public class AngularSourceCodeAdder : ITransientDependency
{
await AddProjectToEnvironmentTsAsync(angularPath, moduleName);
await AddProjectToAppModuleTsAsync(angularPath, moduleName);
await AddProjectToAppRoutingTsAsync(angularPath, moduleName);
}
private async Task AddProjectsToAngularJsonAsync(string angularPath, List<string> projects)
@ -244,15 +246,15 @@ public class AngularSourceCodeAdder : ITransientDependency
{
return;
}
var fileContent = File.ReadAllText(filePath);
fileContent = Regex.Replace(fileContent, @"apis\s*:\s*{",
"apis: {"+ Environment.NewLine +
" " + moduleName.Split(".").Last() + ": {"+ Environment.NewLine +
" rootNamespace: '" + moduleName + "',"+ Environment.NewLine +
fileContent = Regex.Replace(fileContent, @"apis\s*:\s*{",
"apis: {" + Environment.NewLine +
" " + moduleName.Split(".").Last() + ": {" + Environment.NewLine +
" rootNamespace: '" + moduleName + "'," + Environment.NewLine +
" },");
File.WriteAllText(filePath, fileContent);
}
@ -264,23 +266,56 @@ public class AngularSourceCodeAdder : ITransientDependency
{
return;
}
var fileContent = File.ReadAllText(filePath);
var moduleNameAsConfigPath = moduleName.ToKebabCase();
if (moduleName.Contains("."))
{
var moduleNameSplited = moduleName.Split(".");
moduleNameAsConfigPath = moduleNameSplited.Take(moduleNameSplited.Length-1).JoinAsString(".").ToKebabCase() + "/" + moduleNameSplited.Last().ToKebabCase();
moduleNameAsConfigPath = moduleNameSplited.Take(moduleNameSplited.Length - 1).JoinAsString(".").ToKebabCase() + "/" + moduleNameSplited.Last().ToKebabCase();
}
fileContent = "import { "+moduleName.Split(".").Last()+"ConfigModule } from '@"+moduleNameAsConfigPath+"/config';" + Environment.NewLine + fileContent;
fileContent = Regex.Replace(fileContent, "imports\\s*:\\s*\\[",
"imports: ["+ Environment.NewLine +
fileContent = "import { " + moduleName.Split(".").Last() + "ConfigModule } from '@" + moduleNameAsConfigPath + "/config';" + Environment.NewLine + fileContent;
fileContent = Regex.Replace(fileContent, "imports\\s*:\\s*\\[",
"imports: [" + Environment.NewLine +
" " + moduleName.Split(".").Last() + "ConfigModule.forRoot(),");
File.WriteAllText(filePath, fileContent);
}
private async Task AddProjectToAppRoutingTsAsync(string angularPath, string moduleName)
{
string filePath = Path.Combine(angularPath, "src", "app", "app-routing.module.ts");
if (!File.Exists(filePath))
{
return;
}
string fileContent = File.ReadAllText(filePath);
string moduleNameAsConfigPath = moduleName.ToKebabCase();
string path = moduleName.ToKebabCase();
if (moduleName.Contains("."))
{
var moduleNameSplitted = moduleName.Split(".");
moduleNameAsConfigPath = moduleNameSplitted.Take(moduleNameSplitted.Length - 1).JoinAsString(".").ToKebabCase() + "/" + moduleNameSplitted.Last().ToKebabCase();
path = $"{moduleNameSplitted.Last().ToKebabCase()}";
}
string pattern = "Routes\\s*=\\s*\\[";
string newContent = $@"Routes = [
{{
path: '{path}',
loadChildren: () => import('@{moduleNameAsConfigPath}')
.then(m => m.{(moduleName.Split(".").Length > 1 ? moduleName.Split(".")[1] : moduleName)}Module.forLazy())
}},
";
fileContent = Regex.Replace(fileContent, pattern, newContent);
File.WriteAllText(filePath, fileContent);
}
@ -311,7 +346,7 @@ public class AngularSourceCodeAdder : ITransientDependency
{
Directory.Delete(vscodeFolder, true);
}
var projectsInFolder = Directory.GetDirectories(folder);
if (projectsInFolder.Length == 1 && Path.GetFileName(projectsInFolder[0]) == "projects")
@ -360,7 +395,7 @@ public class AngularSourceCodeAdder : ITransientDependency
return projects;
}
private async Task<string> GetProjectPackageNameAsync(string angularProjectsPath, string project)
{
var packageJsonPath = Path.Combine(angularProjectsPath, project, "package.json");

Loading…
Cancel
Save