Browse Source

Fix project file filtering and solution command execution

pull/24697/head
maliming 8 months ago
parent
commit
e783d57aed
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 12
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/DerivedClassFinder.cs
  2. 13
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionFileModifier.cs

12
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/DerivedClassFinder.cs

@ -26,10 +26,10 @@ public class DerivedClassFinder : ITransientDependency
var binFile = Path.Combine(csprojFileDirectory, "bin"); var binFile = Path.Combine(csprojFileDirectory, "bin");
var objFile = Path.Combine(csprojFileDirectory, "obj"); var objFile = Path.Combine(csprojFileDirectory, "obj");
var csFiles = new DirectoryInfo(csprojFileDirectory) var csFiles = new DirectoryInfo(csprojFileDirectory)
.GetFiles("*.cs", SearchOption.AllDirectories) .GetFiles("*.cs", SearchOption.AllDirectories)
.Where(f => f.DirectoryName != null && (!f.DirectoryName.StartsWith(binFile) || !f.DirectoryName.StartsWith(objFile))) .Where(f => !f.FullName.StartsWith(binFile, StringComparison.OrdinalIgnoreCase) &&
!f.FullName.StartsWith(objFile, StringComparison.OrdinalIgnoreCase))
.Select(f => f.FullName) .Select(f => f.FullName)
.ToList(); .ToList();
@ -53,7 +53,13 @@ public class DerivedClassFinder : ITransientDependency
protected bool IsDerived(string csFile, string baseClass) protected bool IsDerived(string csFile, string baseClass)
{ {
var root = CSharpSyntaxTree.ParseText(File.ReadAllText(csFile)).GetRoot(); var csFileText = File.ReadAllText(csFile);
if (!csFileText.Contains("class"))
{
return false;
}
var root = CSharpSyntaxTree.ParseText(csFileText).GetRoot();
var namespaceSyntax = root.DescendantNodes().OfType<NamespaceDeclarationSyntax>().FirstOrDefault(); var namespaceSyntax = root.DescendantNodes().OfType<NamespaceDeclarationSyntax>().FirstOrDefault();
var classDeclaration = (namespaceSyntax?.DescendantNodes().OfType<ClassDeclarationSyntax>())?.FirstOrDefault(); var classDeclaration = (namespaceSyntax?.DescendantNodes().OfType<ClassDeclarationSyntax>())?.FirstOrDefault();

13
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/SolutionFileModifier.cs

@ -18,16 +18,17 @@ public class SolutionFileModifier : ITransientDependency
{ {
_cmdHelper = cmdHelper; _cmdHelper = cmdHelper;
} }
public async Task RemoveProjectFromSolutionFileAsync(string solutionFile, string projectName) public async Task RemoveProjectFromSolutionFileAsync(string solutionFile, string projectName)
{ {
var list = _cmdHelper.RunCmdAndGetOutput($"dotnet sln \"{solutionFile}\" list"); var workingDirectory = Path.GetDirectoryName(solutionFile);
var list = _cmdHelper.RunCmdAndGetOutput($"dotnet sln \"{solutionFile}\" list", workingDirectory: workingDirectory);
foreach (var line in list.Split(new[] { Environment.NewLine, "\n" }, StringSplitOptions.None)) foreach (var line in list.Split(new[] { Environment.NewLine, "\n" }, StringSplitOptions.None))
{ {
if (Path.GetFileNameWithoutExtension(line.Trim()).Equals(projectName, StringComparison.InvariantCultureIgnoreCase)) if (Path.GetFileNameWithoutExtension(line.Trim()).Equals(projectName, StringComparison.InvariantCultureIgnoreCase))
{ {
_cmdHelper.RunCmd($"dotnet sln \"{solutionFile}\" remove \"{line.Trim()}\""); _cmdHelper.RunCmd($"dotnet sln \"{solutionFile}\" remove \"{line.Trim()}\"", workingDirectory: workingDirectory);
break; break;
} }
} }
@ -54,7 +55,7 @@ public class SolutionFileModifier : ITransientDependency
Path.Combine(Path.GetDirectoryName(solutionFile), "modules", module.Name), Path.Combine(Path.GetDirectoryName(solutionFile), "modules", module.Name),
"*.csproj", "*.csproj",
SearchOption.AllDirectories); SearchOption.AllDirectories);
var projectsUnderTest = new List<string>(); var projectsUnderTest = new List<string>();
if (Directory.Exists(Path.Combine(Path.GetDirectoryName(solutionFile), "modules", module.Name, "test"))) if (Directory.Exists(Path.Combine(Path.GetDirectoryName(solutionFile), "modules", module.Name, "test")))
{ {
@ -70,10 +71,10 @@ public class SolutionFileModifier : ITransientDependency
var projectId = Path.GetFileName(projectPath).Replace(".csproj", ""); var projectId = Path.GetFileName(projectPath).Replace(".csproj", "");
var package = @$"modules\{module.Name}\{folder}\{projectId}\{projectId}.csproj"; var package = @$"modules\{module.Name}\{folder}\{projectId}\{projectId}.csproj";
_cmdHelper.RunCmd($"dotnet sln \"{solutionFile}\" add \"{package}\" --solution-folder {folder}"); _cmdHelper.RunCmd($"dotnet sln \"{solutionFile}\" add \"{package}\" --solution-folder {folder}");
} }
if (module.MasterModuleInfos != null) if (module.MasterModuleInfos != null)
{ {
foreach (var masterModule in module.MasterModuleInfos) foreach (var masterModule in module.MasterModuleInfos)

Loading…
Cancel
Save