diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerConsole/Program.cs b/src/NetPackageAnalyzer/NetPackageAnalyzerConsole/Program.cs index 670cd4b..c9bb3ed 100644 --- a/src/NetPackageAnalyzer/NetPackageAnalyzerConsole/Program.cs +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerConsole/Program.cs @@ -3,7 +3,7 @@ public class Program { static async Task Main(string[] args) - { + { WriteLine("Version:"+ThisAssembly.Info.Version.ToString()); //args = new[] diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/GenerateFiles.cs b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/GenerateFiles.cs index 180085e..ee2bcb1 100644 --- a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/GenerateFiles.cs +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/GenerateFiles.cs @@ -119,7 +119,25 @@ public async Task GenerateData(string folder) vers[package.RequestedVersion].Add(projData); } } - + //now we have all data + //add to the projects the package references + foreach (var item in this.projectsDict) + { + var pathProject = item.Value.RelativePath(); + foreach (var package in packagedDict.Values) + { + foreach (var vers in package.VersionsPerProject) + { + foreach (var proj in vers.Value) + { + if (proj.RelativePath() == pathProject) + { + item.Value.Packages.Add(package); + } + } + } + } + } return true; } public async Task GenerateNow(string folder) @@ -144,8 +162,26 @@ public async Task GenerateNow(string folder) file = Path.Combine(folderResults, "ProjectRelation.md"); ArgumentNullException.ThrowIfNull(projectsDict); - await File.WriteAllTextAsync(file, await generator.Generate_ProjectRelations(projectsDict)); - + await File.WriteAllTextAsync(file, await generator.Generate_ProjectsRelations(projectsDict)); + + var folderProjects= Path.Combine(folderResults, "Projects"); + if (!Directory.Exists(folderProjects)) + Directory.CreateDirectory(folderProjects); + foreach (var projData in projectsDict.AlphabeticOrderedProjects) + { + var folderProject = Path.Combine(folderProjects, projData.NameCSproj()); + if (!Directory.Exists(folderProject)) + Directory.CreateDirectory(folderProject); + + file= Path.Combine(folderProject, "ProjectReferences.md"); + await File.WriteAllTextAsync(file, await generator.Generate_ProjectRelations(projData)); + + file = Path.Combine(folderProject, "Packages.md"); + await File.WriteAllTextAsync(file, await generator.Generate_ProjectPackages(projData)); + + + + } //file = Path.Combine(folderResults, "DisplayAllVersionsWithProblems.md"); //ArgumentNullException.ThrowIfNull(projectsDict); //await File.WriteAllTextAsync(file, await generator.Generate_DisplayAllVersionsWithProblemsMarkdown(model)); diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/NetPackageAnalyzerWork.csproj b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/NetPackageAnalyzerWork.csproj index efefab9..c7e6758 100644 --- a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/NetPackageAnalyzerWork.csproj +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/NetPackageAnalyzerWork.csproj @@ -16,6 +16,14 @@ True $([MSBuild]::ValueOrDefault('$(RootNamespace).%(RelativeDir)', '').Replace('\', '.').Replace('/', '.').Trim('.')) + + True + $([MSBuild]::ValueOrDefault('$(RootNamespace).%(RelativeDir)', '').Replace('\', '.').Replace('/', '.').Trim('.')) + + + True + $([MSBuild]::ValueOrDefault('$(RootNamespace).%(RelativeDir)', '').Replace('\', '.').Replace('/', '.').Trim('.')) + @@ -41,12 +49,18 @@ + + + + + + diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/PackageData.cs b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/PackageData.cs index 0676e21..f501068 100644 --- a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/PackageData.cs +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/PackageData.cs @@ -7,6 +7,19 @@ public TypePackageData typePackageData() if (VersionsPerProject.Count < 2) return TypePackageData.OneVersion; return (MajorVersionDiffer()? TypePackageData.MultipleVersionMajorDiff: TypePackageData.MultipleVersionNotMajorDiff); } + public string[] VersionsForProject(ProjectData projectData) + { + List versions = new (); + var relPath = projectData.RelativePath(); + foreach (var item in VersionsPerProject) + { + if (item.Value.Any(it=>it.RelativePath()==relPath)) + { + versions.Add(item.Key); + } + } + return versions.Order().ToArray(); + } public bool MajorVersionDiffer() { if(VersionsPerProject.Keys.Count < 2)return false; diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/ProjectData.cs b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/ProjectData.cs index fdf61cc..e828f78 100644 --- a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/ProjectData.cs +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/ProjectData.cs @@ -2,7 +2,27 @@ public record ProjectData(string PathProject, string folderSolution) { + public string Version = ThisAssembly.Info.Version; public List ProjectsReferences { get; set; }=new(); + + public List Packages { get; set; }=new(); + public ProjectData[] AlphabeticalProjectsReferences + { + get + { + return ProjectsReferences.OrderBy(p => p.NameCSproj()).ToArray(); + } + } + + public PackageData[] AlphabeticalProjectPackages + { + get + { + return Packages.OrderBy(p => p.packageVersionId).ToArray(); + } + } + + public string NameCSproj() { var indexDot=PathProject.LastIndexOf("."); diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/TemplateGenerator.cs b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/TemplateGenerator.cs index 7aa2de3..92b95a1 100644 --- a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/TemplateGenerator.cs +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/TemplateGenerator.cs @@ -1,4 +1,6 @@ -namespace NetPackageAnalyzerWork; + + +namespace NetPackageAnalyzerWork; public class TemplateGenerator { public async Task Generate_DisplayAllVersions(DisplayDataMoreThan1Version model) @@ -24,10 +26,21 @@ public async Task Generate_MermaidVisualizerMajorDiffer(DisplayDataMoreT var rz = new MermaidVisualizerMajorDiffer(model); return await rz.RenderAsync(); } - public async Task Generate_ProjectRelations(ProjectsDict model) + public async Task Generate_ProjectsRelations(ProjectsDict model) + { + var rz = new ProjectsRelations(model); + return await rz.RenderAsync(); + } + + internal async Task Generate_ProjectPackages(ProjectData model) { - var rz = new ProjectRelations(model); + var rz= new ProjectPackages(model); return await rz.RenderAsync(); } + internal async Task Generate_ProjectRelations(ProjectData projData) + { + var rz=new ProjectRelations(projData); + return await rz.RenderAsync(); + } } \ No newline at end of file diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/Templates/ProjectPackages.cshtml b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/Templates/ProjectPackages.cshtml new file mode 100644 index 0000000..335c84e --- /dev/null +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/Templates/ProjectPackages.cshtml @@ -0,0 +1,27 @@ +@inherits RazorBlade.PlainTextTemplate; +@{ + var nameCsproj = Model.NameCSproj(); + var relativePath = Model.RelativePath(); + var name = nameCsproj + "[" + relativePath + "]"; +} + +# Project packages + +|Nr|ID|Version| +| ----------- | ----------- | ----------- | +@{ + int i = 0; +} +@foreach (var item in Model.AlphabeticalProjectPackages) +{ + i++; + var vers = item.VersionsForProject(Model); + var display= string.Join(", ", vers); + +| @i | @item.packageVersionId | @display | + +} + + +Generated by https://www.nuget.org/packages/netpackageanalyzerconsole , version @Model.Version + diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/Templates/ProjectRelations.cshtml b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/Templates/ProjectRelations.cshtml index 74d5e6f..afd7f0a 100644 --- a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/Templates/ProjectRelations.cshtml +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/Templates/ProjectRelations.cshtml @@ -1,41 +1,22 @@ -@inherits RazorBlade.PlainTextTemplate; +@inherits RazorBlade.PlainTextTemplate; +@{ + var nameCsproj = Model.NameCSproj(); + var relativePath = Model.RelativePath(); + var name = nameCsproj + "[" + relativePath + "]"; +} + # Project relations ```mermaid graph TB -%% start projects -@foreach (var proj in Model.AlphabeticOrderedProjects) -{ - var nameCsproj = proj.NameCSproj(); - var relativePath = proj.RelativePath(); - var name = nameCsproj + "[" + relativePath + "]"; - @name - -} - -%% end projects - -@foreach (var proj in Model.AlphabeticOrderedProjects) +@foreach (var rel in Model.AlphabeticalProjectsReferences) { - var nameCsproj = proj.NameCSproj(); - var relativePath = proj.RelativePath(); - var comment = $"%% start project reference {relativePath}"; - -@comment - -@foreach(var rel in proj.ProjectsReferences) -{ - -@nameCsproj-->@rel.NameCSproj() - - - -} - + @nameCsproj-->@rel.NameCSproj() + } diff --git a/src/NetPackageAnalyzer/NetPackageAnalyzerWork/Templates/ProjectsRelations.cshtml b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/Templates/ProjectsRelations.cshtml new file mode 100644 index 0000000..901c30d --- /dev/null +++ b/src/NetPackageAnalyzer/NetPackageAnalyzerWork/Templates/ProjectsRelations.cshtml @@ -0,0 +1,44 @@ +@inherits RazorBlade.PlainTextTemplate; +# Projects relations + +```mermaid +graph TB +%% start projects + +@foreach (var proj in Model.AlphabeticOrderedProjects) +{ + var nameCsproj = proj.NameCSproj(); + var relativePath = proj.RelativePath(); + var name = nameCsproj + "[" + relativePath + "]"; + +@name + + +} + +%% end projects + +@foreach (var proj in Model.AlphabeticOrderedProjects) +{ + var nameCsproj = proj.NameCSproj(); + var relativePath = proj.RelativePath(); + var comment = $"%% start project reference {relativePath}"; + + +@comment + + @foreach (var rel in proj.AlphabeticalProjectsReferences) +{ + +@nameCsproj-->@rel.NameCSproj() + + + +} + + +} + +``` +Generated by https://www.nuget.org/packages/netpackageanalyzerconsole , version @Model.Version +